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

时间:2011-07-26 21:27:25

标签: java

我需要检查Field.getType()检索的反射Field类型的实例是否是扩展特定类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"

3 个答案:

答案 0 :(得分:7)

你倒退了。

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

答案 1 :(得分:3)

尝试

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

答案 2 :(得分:1)

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

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

在此代码中,您询问GenericModel是否是“field.getType()”的超类