실행되는 곳레서 타입 강제 함 -> 해당 타입으로 재정의 -> 컴파일러 사전 체크 = 강제형변화 ㄴ불필요
기본 차입은 넣을 수 없다
import java.util.ArrayList;
import java.util.List;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
public class GenericEx {
public static void main(String[] args) {
List list = new ArrayList();
Order o = new Order();
o.setNumber(12345);
list.add(o);
o.setNumber(12346);
list.add(o);
o.setNumber(12347);
list.add(o);
for(int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
@Getter
@Setter
@ToString
class Order{
private int number = 0;
private String date;
private int price = 0;
}

같은 o를 3번이나 넣었음
public static void main(String[] args) {
List list = new ArrayList();
Order o = new Order();
o.setNumber(12345);
list.add(o);
o = new Order(); //새로운 객체
o.setNumber(12346);
list.add(o);
o = new Order(); //새로운객체
o.setNumber(12347);
list.add(o);
for(int i = 0; i < list.size(); i++) {
System.out.println(list.get(i)); //list.get(i)은 object타입 (최상위)
}
}

for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i).getNumber()); //Object.getNumer()인건데 부모가 자식클래스 메소드 사용?? 불가!! 그래서 오류가 남
}
for (int i = 0; i < list.size(); i++) {
//System.out.println(((Order)list.get(i)).getNumber()); 형변환해주기 => 불편해지잖아~~ 그래서 제네릭 쓰는 거임
}
Object java.util.List.get(int index)
Returns the element at the specified position in this list.
The method getNumber() is undefined for the type Object
List<Order> list = new ArrayList<Order>(); //강제형변환을 하지 않아서 좋음
for (int i = 0; i < list.size(); i++) {
//System.out.println(((Order)list.get(i)).getNumber());
System.out.println(list.get(i).getNumber()); //강제 형변환 불필요
}
Order java.util.List.get(int index)