답변
런타임시 차이점은 없습니다. Java generics는 Type Erasure을 통해 구현되므로 모든 구현에서 동일한 클래스가 사용됩니다.
그러나 컴파일 타임에는 개체를 사용할 때마다 캐스팅하지 않으므로 코드가 훨씬 깔끔 해 보이기 때문에 그 차이는 엄청납니다. 이 컴파일 잘 실행하고
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
for (Integer n : list) {
System.out.println(n+5);
}
그것은 또한 쉽게 읽을 수 :
이 예를 생각해 보자. 대신List<Object>
을 사용하고자하는 경우, 코드가 깨끗하게 보이지 않아 :
List<Object> list = new ArrayList<Object>();
list.add(1);
list.add(2);
list.add(3);
for (Object o : list) {
// Now an explicit cast is required
Integer n = (Integer)o;
System.out.println(n+5);
}
는 내부적으로하지만, 두 코드 조각들이 list
개체에 대한 똑같은 구현을 사용합니다.
List<T>
을 generic이라고하며 따라서 List에 항상 T 유형의 객체가 포함됩니다. 다른 객체는 동일한 유형의 객체를 보장하지 않지만 실제로는 객체임을 알고 있습니다 .
List<T>
은 제네릭 클래스의 이름입니다. List<Object>
은 구체적인 인스턴스입니다. List<T>
은 아직 클래스가 아닙니다 (일반 클래스입니다. 구체적인 클래스는 만들 수 있지만 바로 사용할 수있는 클래스는 아닙니다.) List<Object>
은 클래스입니다.
이것은 전혀 이해가되지 않습니다. –
T는 유형 매개 변수입니다. 이는 다른 어떤 코드가 어떤 타입을 선언 할 수 있다는 것을 의미하며, 그 타입 파라미터를 사용하는 클래스의 코드는 구현시 T를 그 타입으로 대체 할 것임을 의미합니다.
그래서 당신은 당신의 자신의 클래스 푸를 생성하고, FOOS를 포함하는 목록을 선언 할 수
List<Foo> foos = new ArrayList<Foo>();
을 컴파일러가 알고 있기 때문에 당신은 캐스트없이
Foo foo = foos.get(0);
같은 메서드를 호출 할 수 있습니다 이리스트는 foos
오브젝트의 get 메소드에 대한 메소드 리턴 유형에서 T를 Foo로 대체합니다.
- 1. Vim에서 CTRL-T와 CTRL-O의 차이점은 무엇입니까?
- 2. <T> T와 T의 차이점은 무엇입니까?
- 3. vim에서 C-T와 C-o의 차이점은 무엇입니까?
- 4. & T와 & T, & T와 & T, & T와 T/~의 차이점
- 5. doc 유형의 차이점은 무엇입니까
- 6. Comparable과 Object 유형의 차이점
- 7. 다양한 bool 유형의 차이점은 무엇입니까?
- 8. 피쳐 스케일링 유형의 차이점은 무엇입니까?
- 9. OpenGL에서 float 유형의 차이점은 무엇입니까?
- 10. oracle에서 중첩 테이블과 개체 유형의 차이점은 무엇입니까?
- 11. assert object! = null과 Assert.assertNotNull (object)의 차이점은 무엇입니까?
- 12. Object 유형의 객체를 직렬화하는 방법은 무엇입니까?
- 13. Object, * 및 유형 없음의 차이점은 무엇입니까?
- 14. C++에서 object와 object()의 차이점은 무엇입니까
- 15. setattr()과 object .__ setattr __()의 차이점은 무엇입니까?
- 16. Object Storage와 Key-Value Database의 차이점은 무엇입니까?
- 17. LINQ의 두 쿼리 유형의 차이점은 무엇입니까?
- 18. .Resx와 .Resources 파일 유형의 차이점은 무엇입니까?
- 19. ReadOnlyDictionary의 두 가지 유형의 차이점은 무엇입니까?
- 20. Git에서 트리와 커밋 유형의 차이점은 무엇입니까?
- 21. EXTENDED 유형의 PersistenceContext와 TRANSACTION의 차이점은 무엇입니까
- 22. 잠재 유형과 매니페스트 유형의 차이점은 무엇입니까?
- 23. jquery에서 데이터와 데이터 유형의 차이점은 무엇입니까?
- 24. C에서 DWORD와 HANDLE 유형의 차이점은 무엇입니까?
- 25. 참조 유형과 객체 유형의 차이점은 무엇입니까?
- 26. 두 가지 유형의 속성 정의의 차이점은 무엇입니까?
- 27. SQL 데이터 유형의 수와 정수의 차이점은 무엇입니까?
- 28. 기본 유형과 원자 유형의 차이점은 무엇입니까?
- 29. C에서 _Bool과 bool 유형의 차이점은 무엇입니까?
- 30. 이 두 유형의 테이블의 차이점은 무엇입니까? (#와 @)
T = 일반 유형 악기 –
읽기 시작 : http://docs.oracle.com/javase/tutorial/java/generics/ –