2015-01-19 5 views
4

주석 처리 API에서 Types.isAssignable()에 문제가 있습니다. 나는 그것이 false을 반환 typeUtils.isAssignable(someType, objectType)을 실행하면Types.isAssignable을 올바르게 사용하는 방법은 무엇입니까?

TypeMirror someType; // with some value 
TypeMirror objectType = elementUtils.getTypeElement("java.lang.Object").asType(); 

:이 두 변수가 있습니다.

왜 이런 일이 발생합니까? 모든 유형을 Object에 지정할 수 있습니다. 내가 오해하니?


참고 :이 트릭과 예상 값을 반환 isAssignable :이 Class 객체가 나타내는 클래스 또는 인터페이스와 동일하거나 경우

TypeElement typeElement = (TypeElement) typeUtils.asElement(someType); 
String qualifiedName = typeElement.getQualifiedName().toString(); 
TypeMirror copy = elementUtils.getTypeElement(qualifiedName).asType(); 
typeUtils.isAssignable(copy, objectType); // returns true 

답변

0

Types.isAssignable()

를 결정 지정된 Class 파라미터로 나타내지는 클래스 또는 인터페이스의 슈퍼 클래스 또는 슈퍼 인터페이스입니다. 그렇다면 true를 반환합니다. 그렇지 않으면 false를 리턴합니다. 이 Class 객체가 프리미티브 유형을 나타내는 경우 이 메서드는 지정된 Class 매개 변수가이 Class 객체 인 경우 true를 반환하고 그렇지 않으면 false를 반환합니다. 그렇지 않으면 거짓을 반환합니다.

+0

이것은'POJO' 클래스가'객체'에 할당 될 수없는 이유를 설명하지 않습니다. –

+0

정답이 없습니다. 'Class.isAssignableFrom()은 본질적으로 하위 유형을 확인합니다. "하위 유형"과 "하위 클래스"는 두 가지 개념입니다. '자세한 내용은 http://stackoverflow.com/questions/1650931/why-object-class-isassignablefromstring-class-true 참조하면 도움이 될 것입니다. – iMBMT

관련 문제