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;
}
}
오류창 : ArrayList is a raw type. References to generic type ArrayList<E> should be parameterized