develope_kkyu

[JAVA] 제네릭에 대해 알아보기 본문

JAVA/Java SE

[JAVA] 제네릭에 대해 알아보기

developekkyu37 2022. 12. 22. 10:24
728x90
public static void main(String[] args) {
		// 1. 제네릭을 사용하지 않았을 경우의 케이스. ==> 데이터의 타입을 확인하면서 강제타입변환을 필요하였음.
		List list1 = new ArrayList();
		// List는 인터페이스, ArrayList는 구현클래스.
		list1.add("HUMAN1");
		list1.add("HUMAN2");
		list1.add(10);
		// 위의 형태로 문자와 숫자가 같이 담겨있을 수 있는 이유는
		// Object의 형태이기 때문에 가능함.
		
		String str1 = (String) list1.get(0);
		// list1.get(0) ==> 되돌려주는 값의 타입. Object
		// Object 클래스는 모든 클래스의 최상위 타입임.
		// String 클래스는 Object를 상속 받은 Object 하위의 클래스임.
		// 즉, Object 타입을 ==> String 타입으로 변환하기 위해서는 강제타입변환이 필요하다.
	
		System.out.println("str1 : " + str1);

		int intValue = (int) list1.get(2);
		System.out.println("intValue : " + intValue);
		
		// 2. 제네릭은 처음부터 감딜 데이터의 타입을 제한하는 것을 의미함,
		List <String> list2 = new ArrayList<String>();
		// list2라는 배열변수에 String 타입만 우선 담기는 것을 재한함.
		list2.add("human3");
//		list2.add(10));
		// 제네릭을 사용하게 되면, 제약을 둔 데이터 타입이외의 것이 들어오면 미리 체크할 수 있는 장접
		// 배열변수의 데이터 타입에 대해서 데이터 정합성을 사전에 체크할 수 있다.
		
		String str2 = list2.get(0);
		// 제네릭을 사용하면 배열변수에 담길 데이터에 대해서 미리 제한을 두었기 때문에
		// 강제타입변환을 할 필요가 없어진다.
		
		System.out.println("str2 : " + str2);
		
	}

--

str1 : HUMAN1
intValue : 10
str2 : human3

728x90