Java
[Java] Generics
Bogass
2023. 3. 8. 13:31
메소드의 설명을 읽어보는데 K, V, E 이런것들이 정확히 뭘 의미하는지 몰라 찾아보았다.
찾아보니 클래스를 좀더 유연하게 사용 가능하도록 해 줄 것 같으나 클래스 설계를 잘 해야 할 것 같다.
Java Generics
- 타입을 클래스 내부에서 지정하는 것이 아닌 외부에서 사용자에 의해 지정되는 것을 의미
Generic 장점
- 잘못된 타입이 들어오는걸 컴파일 단계에서 방지
- 클래스 외부에서 타입을 지정할 수 있음
- 따라서, 코드 재사용성을 높일 수 있다.
- 아래의 표는 통상적인 선언일뿐, 꼭 이렇게 선언 할 필요는 없음
Type | 설명 |
---|---|
< T > | Type |
< E > | Element |
< K > | Key |
< V > | Value |
< N > | Number |
- 파라미터로 명시 할 수 있는 것은 참조타입만 가능
(int,char 과 같은 기본형타입(primitive type)은 사용불가)
Example
ClassGeneric.java
public class ClassGeneric<E> {
private E element; // 제네릭 타입 변수
public void set(E element) { // 제네릭 파라미터 메소드
this.element = element;
}
public E get() { // 제네릭 타입 반환 메소드
return element;
}
}
App.java
public class App {
public static void main(String[] args) {
ClassGeneric<String> cgstr = new ClassGeneric<>();
ClassGeneric<Integer> cgint = new ClassGeneric<>();
cgstr.set("generic test");
cgint.set(1000);
if(cgstr.get() instanceof String){
System.out.println("cgstr is String");
}
if(cgint.get() instanceof Integer){
System.out.println("cgint is Integer");
}
}
}
references