Language/Java

제네릭 객체참조변수에서의 <> 생략

원2 2021. 3. 30. 11:11
728x90
반응형

타입지정을 하지 않아도 알아서 가능.

class Data2<T1, T2> {
	private T1 Num1;
	private T2 Num2;

	Data2(T1 Num1, T2 Num2) {
		this.Num1 = Num1;
		this.Num2 = Num2;
		}

	public T1 getNum1() {
		return Num1;
	}

	public void setNum1(T1 num1) {
		Num1 = num1;
	}

	public T2 getNum2() {
		return Num2;
	}

	public void setNum2(T2 num2) {
		Num2 = num2;
	}

}
public class Test004 {

	public static void main(String[] args) {
		Data2<Integer, Double> aData2 = new Data2<Integer, Double>(3, 3.1);
		System.out.println(aData2.getNum1());
		System.out.println(aData2.getNum2());

		Data2<Integer, Double> aData2_1 = new Data2<>(3, 3.1);
		System.out.println(aData2_1.getNum1());
		System.out.println(aData2_1.getNum2());
		// Data2<>aData2_2 = new Data2<>(3,3.1); 허용 안함
		// 뒤쪽은 생략이 가능하지만 래퍼클래스의 형은 생략할 ㅅ수 없다.
		
		
		// 객체 생성쪽은 <>내의 타입의 생략이 가능
		Data2 aData2_2 = new Data2<>(7, 7.1);
		System.out.println(aData2_2.getNum1());
		System.out.println(aData2_2.getNum2());
		
		
		
		// 참조 변수 선언시 <>부분 통째로 생략 가능2 : 실제로는 Object가 삽입 됨
		// 정확한 Type 지정을 생략하면 모두 Object Type으로 간주.
		Data2<Object, Object> aData2_3 = new Data2<>(7, 7.1);
		
		System.out.println(aData2_3.getNum1());
		System.out.println(aData2_3.getNum2());
		
		aData2_3.setNum1(3.14);
		aData2_3.setNum1("TEST"); // Object로 되어있어서 글자도 출력함.
		System.out.println(aData2_3.getNum1());
		System.out.println(aData2_3.getNum2());

	}

}
728x90
반응형

'Language > Java' 카테고리의 다른 글

iterator  (0) 2021.03.30
ArrayList 예제  (0) 2021.03.30
ArrayList  (0) 2021.03.30
제네릭 메서드 기법  (0) 2021.03.30
wrapper class, boxing unboxing  (0) 2021.03.29
wrapper class 예제  (0) 2021.03.29