java - 如何正确使用 Types.isAssignable?

标签 java annotation-processing

我在使用 Types.isAssignable() 时遇到问题来自注释处理 API。我有这两个变量:

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()

Determines if the class or interface represented by this Class object is either the same as, or is a superclass or superinterface of, the class or interface represented by the specified Class parameter. It returns true if so; otherwise it returns false. If this Class object represents a primitive type, this method returns true if the specified Class parameter is exactly this Class object; otherwise it returns false.

关于java - 如何正确使用 Types.isAssignable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28029248/

相关文章:

java - 在 Java 代码中使用 Grep

java - 如何在 Android 上删除 RecyclerView 的 header

java - 一个曾经可以工作的 servlet,现在神奇地不能工作了

java - 用java写控制台输出

java - 在编译时访问VM参数

java - 获取 javax.annotation.processing.Processor 中 VariableElement 的封闭类名

java - Android studio 3.1 无法识别 jar 注释处理

java - 卡夫卡 : consume all messages on demand

java - 如何使用 Java8 获取 VariableElement 的类型注释和属性值?