의 차이점은 무엇입니까 List, List<?>, List<T>, List<E>, 그리고 List<Object>?
1. 목록
List:는 원시 유형이므로 그렇지 않습니다 typesafe. 캐스팅이 나쁜 경우에만 런타임 오류가 발생합니다. 캐스트가 나쁜 경우 컴파일 시간 오류가 필요합니다. 사용하지 않는 것이 좋습니다.
2. 목록 <?>
List<?>무제한 와일드 카드입니다. 그러나 그것이 무엇인지 잘 모르겠습니다. List<?>문제없이 인쇄 할 수 있습니다 .
public static void test(List<?> list){
System.out.println(list); // Works
}
에 항목을 추가 할 수없는 이유는 무엇 List<?>입니까?
public static void test(List<?> list){
list.add(new Long(2)); // Error
list.add("2"); // Error
System.out.println(list);
}
3.리스트 <T>
public static void test(List<T> list){ // T cannot be resolved
System.out.println(list);
}
이 구문을 이해하지 못합니다. 나는 이와 같은 것을 보았고 효과가있다.
public <T> T[] toArray(T[] a){
return a;
}
때때로, 나는 참조 <T>하거나 <E>, 또는 <U>, <T,E>. 그들은 모두 같습니까 아니면 다른 것을 나타 냅니까?
4.리스트 <개체>
이 오류는 "이 방법 test(List<Object>)은 인수에 적용 할 수 없습니다 List<String>"입니다.
public static void test(List<Object> list){
System.out.println(list);
}
나는 다음이를하려고하면 나는 "에서 캐스팅 할 수 없습니다 얻었다 List<String>에 List<Object>"
test((List<Object>) names);
혼란 스러워요. String의 서브 클래스입니다 Object왜하지, List<String>의 서브 클래스 List<Object>?
2. 에서 이것을 보여주기 위해 몇 가지 코드를 작성2합니다. tyvm