class EmployeeInfo4{ public int rank; EmployeeInfo4(int rank){ this.rank = rank; } } class Person4{ //generic으로 원시 기본 data type 을 사용할 수 없다. 사용하고 싶다면 wrapper class 을 사용해야한다. 원시 기본 data type을 객체화 시키는것 public T info; public S id; Person4(T info, S id){ this.info = info; this.id = id; } public void printInfo (U info) { System.out.println(info); } } public class GenericDemo4 { public static void main(String[] args) { //Integer => int 에 대한 wrapping class System.out.println(""); System.out.println("Multiple Generic Demo\n"); EmployeeInfo4 e = new EmployeeInfo4(1); Integer i = new Integer(10); Person4 p1 = new Person4(e, i); Person4 p2 = new Person4(e, i); //Person4 p1 = new Person4(new EmployeeInfo4(1), new Integer(10)); //p1 System.out.println(p1.info.rank); System.out.println(p1.id); System.out.println(p1.id.intValue()); System.out.println("end\n"); p1.printInfo(e.rank); p1.printInfo(e.rank); p1.printInfo(i); p1.printInfo(i); p1.printInfo(i.intValue()); p1.printInfo(i.intValue()); System.out.println("end\n"); //p2 System.out.println(p2.info.rank); //=>오류 why? System.out.println(p2.id); System.out.println(p2.id.intValue()); //=>오류 why? System.out.println("end\n"); p2.printInfo(e.rank); p2.printInfo(e.rank); p2.printInfo(i); p2.printInfo(i); p2.printInfo(i.intValue()); p2.printInfo(i.intValue()); System.out.println("end\n"); } }