의 차이점은 무엇입니까 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