我对注释处理api中的Types.isAssignable()有问题。我有两个变量:

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

当我执行typeUtils.isAssignable(someType, objectType)时,它返回false
为什么会这样?任何类型都可以分配给Object。我误解了什么?
注意:isAssignable使用以下技巧返回预期值:
TypeElement typeElement = (TypeElement) typeUtils.asElement(someType);
String qualifiedName = typeElement.getQualifiedName().toString();
TypeMirror copy = elementUtils.getTypeElement(qualifiedName).asType();
typeUtils.isAssignable(copy, objectType); // returns true

最佳答案

Types.isAssignable()
确定由该类对象表示的类或接口是否与由指定的类参数表示的类或接口相同,或者是该类或接口的超类或超接口。如果是,则返回true;否则返回false。如果这个类对象表示一个基元类型,如果指定的类参数正好是这个类对象,那么这个方法返回true;否则返回false。

07-24 09:51