Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何检查一个类型是否是另一个类型的子类?_Java - Fatal编程技术网

Java 如何检查一个类型是否是另一个类型的子类?

Java 如何检查一个类型是否是另一个类型的子类?,java,Java,我需要检查由Field.getType()检索的反射字段类型的实例是否是扩展特定类GenericModel的另一个类的实例 我正在尝试以下伪代码片段中的内容: if(field.getType() "is_a_superclass_of" GenericModel) { ... then do something with it } 我该怎么做 当我尝试类似于: field.getType().isAssignableFrom(Language.class) 我得到一个结果,true

我需要检查由Field.getType()检索的反射字段类型的实例是否是扩展特定类GenericModel的另一个类的实例

我正在尝试以下伪代码片段中的内容:

if(field.getType() "is_a_superclass_of" GenericModel) {
    ... then do something with it
}
我该怎么做

当我尝试类似于:

field.getType().isAssignableFrom(Language.class)
我得到一个结果,true,这意味着它属于Language类,它扩展了GenericModel。但是,

field.getType().isAssignableFrom(GenericModel.class)
返回false

field.getType() == "za.co.company.package.model.Language"

你把考试倒过来了

GenericModel.class.isAssignableFrom(field.getType())
试一试


您可能希望颠倒验证顺序:

  GenericModel.class.isAssignableFrom(field.getType());

在这段代码中,您会问GenericModel是否是“field.getType()”的一个超类。

+1在使用它之前,我也总是要暂停一下——有些情况下,它似乎与直觉相反。返回
field.getType().isAssignableFrom(Language.class)
的原因是
Language
是字段类型的一个子类,而不是反过来(可能字段是一种语言)。这是我的答案,正如您首先发布的!非常感谢你的帮助!是啊,我已经犯了很多次同样的错误。我猜这是因为instanceof等从左到右。谢谢!正是我需要的!
  GenericModel.class.isAssignableFrom(field.getType());