-
Java - Generic MethodJava 2018. 1. 24. 10:47반응형< Generic Method >// Generic은 Type의 자유public class Box<T> {private T t;public T getT() {return t;}public void setT(T t) {this.t = t;}}public class Gmethod {// 매개변수 사용public <T> void method01(T t) {System.out.println("입력 값 : "+t);}// 매개변수, 반환타입 사용public <T> T method2(T t) {return t;}// 활용public <T> Box<T> method3(T t){ // 반환 값이 Box<T> 타입이기 때문에 메소드 타입에 Box<T> 사용Box<T> box = new Box<T>();box.setT(t);return box; // Box<T> 타입 반환}}public class Main {public static void main(String[] args) {Gmethod gm = new Gmethod();// 인자 값의 타입에 상관없이 실행된다gm.method01(100); // intgm.method01("Moo"); // Stringgm.method01(true); // booleanSystem.out.println(gm.method2(30));System.out.println(gm.method2("Sang"));System.out.println(gm.method2(275.25));Box<Integer> box = gm.method3(100);System.out.println(box.getT());System.out.println(gm.method3(25).getT());}}< Generic Method - inheritance >public class BasicInfo<N,A> {private N name;private A age;public N getName() {return name;}public void setName(N name) {this.name = name;}public A getAge() {return age;}public void setAge(A age) {this.age = age;}}public class DetailInfo<N,A,H> extends BasicInfo { // BasicInfo<N,A>로 안해주면 참조한다.// BasicInfo<N,A>로 하면 타입 순서를 맞춰야 한다.private H hobby;public H getHobby() {return hobby;}public void setHobby(H hobby) {this.hobby = hobby;}}public class Main {public static void main(String[] args) {DetailInfo<Integer, String, String> di = new DetailInfo<>(); // 다이아몬드 연산자 <>으로 비워두면// 명시한것보다 왼쪽에서 참조해서 사용한다.di.setAge(26);di.setName("Sangmoo");di.setHobby("Soccer");System.out.println("나이 : "+di.getAge());System.out.println("이름 : "+di.getName());System.out.println("취미 : "+di.getHobby());}}< Generic을 사용하다가 원치 않는걸 제한 할때는 typeBound, WhildCard사용 >
typeBound는 위에서 아래로만 사용 가능
WhildCard는 super()를 이용해서 ex) Box<? super Regular> box : Box와 Regular만 사용 가능
반응형'Java' 카테고리의 다른 글
Java - Map (0) 2018.01.25 Java - Collection (0) 2018.01.25 Java - Generic (0) 2018.01.24 Java - StringBuffer & StringBuilder (0) 2018.01.23 Java - String (0) 2018.01.23 댓글