제네릭(Generic)
제네릭(Generic)에 대해서 살펴보자
Last updated
public class GenericClass<T> {
private T t;
public GenericClass(T t) {
this.t = t;
}
public GenericClass() {
}
public T getT() {
return t;
}
public void setT(T t) {
this.t = t;
}
}public static void main(String[] args) {
GenericClass<String> stringGenericClass = new GenericClass<>();
stringGenericClass.setT("incheol");
System.out.println(stringGenericClass.getT());
GenericClass<Integer> integerGenericClass = new GenericClass<>();
integerGenericClass.setT("20"); // 컴파일 오류
}public interface GenericInterface<T> {
public T get();
}
class StringGeneric implements GenericInterface<String> {
@Override
public String get() {
return "incheol";
}
}
class IntegerGeneric implements GenericInterface<Integer> {
@Override
public Integer get() {
return 20;
}
}
public static void main(String[] args) {
StringGeneric stringGeneric = new StringGeneric();
System.out.println(stringGeneric.get());
}public class GenericMethodClass {
public <T> T showGenericData(T data){
return data;
}
public <T> T showGenericData2(T data){
return data;
}
}public static void main(String[] args) {
GenericMethodClass genericMethodClass = new GenericMethodClass();
System.out.println(genericMethodClass.<String>showGenericData("incheol"));
System.out.println(genericMethodClass.<Integer>showGenericData2(1000));
}public class GenericEntry<K,V>{
private K key;
private V value;
public K getKey() {
return key;
}
public void setKey(K key){
this.key = key;
}
public V getValue() {
return value;
}
public void setValue(V value) {
this.value = value;
}
}
public static void main(String[] args) {
GenericEntry<String, Integer> genericEntry = new GenericEntry<>();
genericEntry.setKey("incheol");
genericEntry.setValue(1000);
}public class GenericLimitClass<T extends Number> {
private T t;
public double getDouble(){
return t.doubleValue();
}
public void setT(T t){
this.t = t;
}
}
public static void main(String[] args) {
GenericLimitClass<Double> genericLimitClass = new GenericLimitClass<>();
genericLimitClass.setT((double)100);
}public class WildCardClass {
public static void print(List<?> items){
for(Object item : items){
System.out.println(item);
}
}
public static void main(String[] args) {
ArrayList items = new ArrayList();
items.add("incheol");
items.add(10);
WildCardClass.print(items);
}
}
// result
// incheol
// 10