클래스 템플릿의 typename을 얻고 싶습니다 (ex set). 예를 들어 내가 사용하는 경우 :클래스 템플릿의 typename을 얻습니다.
Set<Personne> p = new HashSet<Personne>();
/* manipulate p etc ... */
어떻게 p가 비어있는 경우에도 p.getTypeName()
같은 것을 사용하여 (Personne입니다) P의 유형 이름을 알 수 있습니다.
클래스 템플릿의 typename을 얻고 싶습니다 (ex set). 예를 들어 내가 사용하는 경우 :클래스 템플릿의 typename을 얻습니다.
Set<Personne> p = new HashSet<Personne>();
/* manipulate p etc ... */
어떻게 p가 비어있는 경우에도 p.getTypeName()
같은 것을 사용하여 (Personne입니다) P의 유형 이름을 알 수 있습니다.
런타임에는 실행할 수 없습니다. 이는 type erasure이 원인입니다.
Java 유형 삭제로 인해 런타임에 매개 변수화 된 유형에 액세스 할 수 없습니다. 그러나, 당신은 어떤 종류가 수도하고 그냥 그 중 하나인지 확인하려면 알고있는 경우 :
if (someObject instanceof SomeType) {
...
} else if (someObject instanceof SomeOtherType) {
...
} ...
그러나 어떤 유형인지 모를 경우 어떤 유형의 객체 세트가 있다고 가정 할 경우 유형이 비어있을 때 유형을 SomeType 또는 SomeOtherType으로 테스트 할 수 없습니다. 맞습니까? – shn
@ user995434 빈 세트가있는 경우 전달 된 매개 변수가 중요한 이유는 무엇입니까? –
SomeType 유형의 객체 집합 A와 SomeOtherType 유형의 객체 집합 B가 로컬에 있다고 가정합니다. 이 집합이 비어 있고 T가 SomeType 인 경우 형식 T의 개체 집합을 예약한다고 가정합니다. 집합 A를 비우려면 (비우기) 싶습니다. 각 개체에 지시자가 없다는 것을 나타내는 경우 어떻게 할 것입니까? 유형의 SomeType 또는 SomeOtherType? @ 크리스 캐쉬 웰 – shn
자바가 제네릭 있지만 템플릿 C처럼 ++. 그래서'HashSet'은 "클래스 템플릿"이 아닙니다. Java의 제네릭은 C++의 템플릿과 동일하게 작동하지 않습니다. – Jesper