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

+ Recent posts