- ExGeneric & Base & Fruits
package ch01_generic;
/*
* generic
* → 모든 종류의 데이터 타입을 다룰 수 있도록 일반화된 타입 매개변수로 class를 정의하는방법.
* → 선언시 클래스 뒤에 '<>'기호를 붙여서 괄호안에 타입 파라메터 이름을 정의.
*/
public class ExGeneric<T>{
private T data;
public T getData() {return data;}
public void setData(T data) { this.data = data; }
}
--------------------------------------------------------------------------------
//Basic
package ch01_generic;
public class Basic {
private Object obj;
public Object getobj() { return obj; }
public void setobj(Object obj) {
this.obj = obj;
}
}
--------------------------------------------------------------------------------
//Fruits
package ch01_generic;
public class Fruits {
private String name; // 과일이름
private int ea; // 수량
public Fruits(String name, int ea) {
this.name = name;
this.ea = ea;
}
public String toString() {
return "품명 : " + name + " 수량 : " + ea;
}
}
package ch01_generic;
public class GenericTest {
public static void main(String[] args) {
Basic basicA = new Basic();
basicA.setobj(new String("basicA")); // UPcasting
String stnA = (String)basicA.getobj(); //Downcasting
System.out.println(stnA);
System.out.println();
// object여서 모든 자료형 처리 가능.
Basic basicB = new Basic();
basicB.setobj(new Fruits("충주 사과", 10));
Fruits fra = (Fruits)basicB.getobj();
System.out.println(fra);
System.out.println();
ExGeneric<String> eg = new ExGeneric<String>();
eg.setData("test");
String str = eg.getData();
System.out.println(str);
System.out.println();
ExGeneric<Fruits> fr = new ExGeneric<>();
fr.setData(new Fruits("감귤", 10));
// 여기서 꺼내올 때는 Fruits 변수만 있으면 됨.
Fruits frb = fr.getData();
System.out.println(frb);
System.out.println();
// ExGeneric<int> egC = new ExGeneric<>(); → 기본 자료형 대신 Wrapper class 사용.
ExGeneric<Integer> egC = new ExGeneric<>();
// Auto boxing
egC.setData(100);
// Integer → Int : Auto unboxing
int ia = egC.getData();
System.out.println(ia);
System.out.println();
// 문자열 → int : Integer.parseInt() parsing 필요
ExGeneric<String> egt = new ExGeneric<>();
egt.setData("100");
int ib = Integer.parseInt(egt.getData());
System.out.println(ib);
}
}