Generic(제네릭)
- 자료형을 선언할 때 자료형을 정하지 않는 기법(사용할 때 지정)
<키워드>
대문자로시작
- E : Element
- N : Number
- T : Type
- K : Key
- V : value
- Generic class(제네릭 클래스)
- 클래스 내부에서 사용될 자료형을 지정한다.
GClassTest<String> obj = new GClassTest<>(); obj.data1 = "Hello"; GClassTest<Integer> obj2 = new GClassTest<>(); obj2.data1 = 10; //Integer 타입의 객체 data1 에 int 타입의 10 을 대입하면 Auto-BOXING
- 단, 객체형 자료형이어야 한다.
int
char
double
등과 같은 기본자료형은 사용 불가능- Wrapper class 타입을 사용하여
int
-->Integer
로 사용가능- Autoboxing 으로
Integer
을 사용하여 int 값 바로 대입
- Autoboxing 으로
- Wrapper class 타입을 사용하여
class 클래스명<키워드>{ 내부에서 키워드를 타입으로 사용 가능 }
- 클래스 내부에서 사용될 자료형을 지정한다.
- Generic method(제네릭 메소드)
- 메소드 내부에서 사용될 자료형을 지정한다.
<키워드>리턴타입 메소드명(){ 내부에서 키워드를 타입으로 사용 가능 }
<Type>void f(Type data) { System.out.println(data); }
- 메소드는 호출할 때, <타입>를 표기하지 않아도 자동으로 타입을 정해준다.
위를 실행한 결과는 같다. <>타입 생략가능GMethodTest obj3 = new GMethodTest(); obj3.<String>f2("Hello"); obj3.f2("Hello");
- Generic interface(제네릭 인터페이스)
- 인터페이스 내부에서 사용될 자료형을 지정한다.
interface 인터페이스명<키워드>{
내부에서 키워드를 타입으로 사용 가능
}
Ex)
public interface GInterTest<N1, N2> {
N1 add(N1 num1, N1 num2);
N2 div(N1 num1, N2 num2);
N2 sub(N2 num1, N2 num2);
}
GInterTest<Integer, Double> obj4 = new GInterTest<Integer, Double>() {
@Override
public Double sub(Double num1, Double num2) {
return num1 - num2;
}
@Override
public Double div(Integer num1, Double num2) {
return num1/num2;
}
@Override
public Integer add(Integer num1, Integer num2) {
return num1 + num2;
}
};
'Java > Java(base)' 카테고리의 다른 글
[Java] 스레드 Thread 멀티스레드 Multi-Thread run(), start() (0) | 2021.12.17 |
---|---|
[Java]Object class toString(), equals(), hashcode() (0) | 2021.12.02 |
[Java] @Annotation, 어노테이션 (0) | 2021.12.01 |
[Java] Java API(Application Programming Interface) (0) | 2021.12.01 |
[Java] 예외처리 try-catch-finally / throw throws 차이점 및 예제 (0) | 2021.12.01 |