package genericTest;
// 제네릭을 사용하지 않는 class
class NonGeneric{
private Object value;
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
}
public class GenericTest {
public static void main(String[] args) {
NonGeneric ng1 = new NonGeneric();
ng1.setValue("가나다라");
NonGeneric ng2 = new NonGeneric();
ng2.setValue(100);
String sTemp = (String)ng1.getValue();
int iTemp = (int)ng2.getValue();
System.out.println("문자열 반환값 : " + sTemp);
System.out.println("정수형 반환값 : " + iTemp);
}
}
class 클래스명<제네릭타입문자>{
제네릭타입문자 변수명; //변수 선언에 제네릭을 사용할 경우
...
제네릭타입문자 메서드명(){ //반환값이 있는 메서드에 제네릭 사용하는 경우
...
return 반환값;
}
void 메서드명(제네릭타입문자 변수명1, ...){
...
}
T : Type
K : Key
V : Value
E : Element (자료구조에 들어가는 데이터)
package genericTest;
class MyGeneric<T>{
private T Value; //변수 선언
public T getValue() { //반환값 타입
return Value;
}
public void setValue(T value) { // 매개변수
Value = value;
}
}
public class GenericTest {
public static void main(String[] args) {
System.out.println("--------------------------------");
MyGeneric<String> mg1 = new MyGeneric<>();
mg1.setValue("안녕하세요.");
MyGeneric<Integer> mg2 = new MyGeneric<>();
mg2.setValue(500);
sTemp = mg1.getValue();
iTemp = mg2.getValue();
System.out.println("제네릭 문자열 반환값 : " + sTemp);
System.out.println("제네릭 문자열 반환값 : " + iTemp);
// String sTemp3 = mg2.getValue();
}
}
제네릭 문자열 반환값 : 안녕하세요.
제네릭 문자열 반환값 : 500