< collections – collections.list – ListTest04 >

< collections – collections.list – Person >

package collections.list;

public class ListTest04 {

	public static void main(String[] args) {
		
		
		// 일반적인 '배열' -> 같은 타입의 데이터끼리만 묶음
		int[] intArr = new int[3];
		double[] douArr = new double[3];
		String[] strArr = new String[3];
		
		
		// 'Object 배열' -> 다른 종류의 데이터 타입도 묶을 수 있음
		Object[] objArr = new Object[6];
		
//		objArr[0] = "노태종";
//		objArr[1] = 28;
//		objArr[2] = "010-1111-1111";
//		
//		objArr[3] = "홍길동";
//		objArr[4] = 34;
//		objArr[5] = "010-1234-5678";
		
		
		/*
		그러나, 위와 같이 정보를 하나하나씩 다 입력해서 관리하는 것은 비효율적
		=> 'Object 배열'에다가 
		   '클래스(서로 다른 데이터 타입을 관리할 수 있는 집합 구조)'를 결합하면,
		    효율적으로 관리 가능
		*/
		
		
		// 별도로 만든 Person 클래스로 객체 생성
		objArr[0] = new Person("노태종", 28, "010-1111-1111"); // [클래스]의 정보를 [Object 배열]에 넣을 때는 강제 캐스팅할 필요 X
		Person p = (Person) objArr[0]; /* 그러나, [Object 배열]에 있는 정보를 [클래스]의 변수에 넣을 때는 [클래스]로 강제 캐스팅 해야 함 
																		  -> Object 개념 사용하면, 강제 캐스팅 등의 번거로운 일 발생
																		  -> Generic의 개념 등장! */
		System.out.println( ((Person) objArr[0]).age );
		
		
		// 최상위 클래스인 Object로 생성
		Object obj = new Person("노태종", 28, "010-1111-1111"); // [일반적인 클래스 - Person]의 정보를 [최상위인 Object 클래스]에 넣을 때는 강제 캐스팅할 필요 X
		Person p2 = (Person) obj; /* 그러나, [최상위인 Object 클래스]에 있는 정보를 [일반적인 클래스]의 변수에 넣을 때는 [일반적인 클래스]로 강제 캐스팅 해야 함
																 -> Object 개념 사용하면, 강제 캐스팅 등의 번거로운 일 발생
																 -> Generic의 개념 등장! */
		System.out.println(p2.name);
		
		
	}

}
package collections.list;

public class Person {
	
	
	String name;
	int age;
	String phone;
	
	/* 위에서 변수 작성 후에,
	   [ 마우스 우클릭 - Source - Generate Constructor using Fields
	 	 - 3개 모두 선택한 상태에서 Generate */ 

	
	public Person(String name, int age, String phone) {
		super(); // Object 클래스(최상위 클래스)
		this.name = name;
		this.age = age;
		this.phone = phone;
	}
	

}

< collections – collections.list – ListTest01 >

Untitled

오류창 : ArrayList is a raw type. References to generic type ArrayList<E> should be parameterized