1.Generic 메소드
메소드 안에서 객체화
package chap08.exam08.gmethod; public class Gmethod { // 매개변수에 T 사용 // 인자값의 타입에 따라 제너릭에 영향을 준다. // 들어오는 타입에 따라 대응이 된다. public <T> void method1(T t) { System.out.println("입력 값 : " + t); } // 받은 값을 그대로 반환 public<T> T method2(T a) { return a; } // 매개변수를 이용한 반환타입 설정 public <T> Box<T> method3(T t){ // 1. 100이 들어온다. // 2. T의 타입이 Integer가 된다. Box<T> box = new Box<T>(); // Integer 형태로 객체화 // 객체에 100이 들어간다. box.setValue(t); return box; // 이 객체를 반환 한다. } }
package chap08.exam08.gmethod; public class Box<T> { // 아직 뭔지는 모르나 어떤 타입이 설정 될 예정 // 타입이 설정되면 클래스 모든 타입이 통일 된다. // 클래스 선언/객체화 될 때 타입을 설정함. // T 자리에는 쓰고싶은거 써도 됨 private T value; public T getValue() { return value; } public void setValue(T value) { this.value = value; } }
package chap08.exam08.gmethod; public class Main { public static void main(String[] args) { Gmethod test = new Gmethod(); test.method1("ㅎㅇ"); String str = test.method2("고길동 재산 : "); int money = test.method2(Integer.MAX_VALUE); System.out.println(str + money); Box<Integer> box1 = test.method3(100); System.out.println(box1.getValue()); Box<String> box2 = test.method3("hong"); System.out.println(box2.getValue()); // Method의 return type과 Reference type이 // 상황에 따라 유연하게 변경가능 } }
2.Generic 상속
Generic 역시 상속이 가능하다.
package chap08.exam09.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; } }
package chap08.exam09.inheritance; public class DetailInfo<N, A, H> extends BasicInfo<N, A> { private H hobby; public H getHobby() { return hobby; } public void setHobby(H hobby) { this.hobby = hobby; } }
package chap08.exam09.inheritance; public class Main { public static void main(String[] args) { // DetailInfo<String, Integer, String> info = new DetailInfo<String, Integer, String>(); info.setName("둘리"); info.setAge(56); info.setHobby("호잇"); System.out.println(info.getName() + ", 나이는 " + info.getAge() + "\n" + "취미는 " + info.getHobby()); } }
'개념 및 코딩 > 06.기타' 카테고리의 다른 글
[JAVA]06-06.Generic (0) | 2018.09.03 |
---|---|
[JAVA]06-05.Object (0) | 2018.09.03 |
[JAVA]06-04.String (0) | 2018.09.03 |
[JAVA]06-03.Throw 예외처리, 커스텀 예외처리 (0) | 2018.09.03 |
[JAVA]06-02.예외처리 instance of, try catch (0) | 2018.09.03 |