instanceof失败但isInstance()和isAssignableFrom()工作?

时间:2015-12-01 18:23:20

标签: java

我有一些参数Class<? extends JsonAPIDataObject> responseClass,当我尝试使用if(responseClass instanceof ThisClass) ThisClass实现JsonAPIDataObject时,它会不断说出不兼容的类型?

编辑:

MyClass.class.isAssignableFrom(responseClass.getClass())
MyClass.class.isInstance(responseClass.getClass())

两个都不行,我试过没有.getClass()。

1 个答案:

答案 0 :(得分:4)

x instanceof Y仅在x的编译时类型与Y兼容时才编译。例如,下面的代码没有编译,因为没有StringNumber

String str = "Foo";
System.out.println(str instanceof Number);

在您的情况下,responseClassClass,而不是ThisClass所以

responseClass instanceof Class

编译,并提供true,而

responseClass instanceof ThisClass

没有编译。您应该使用isInstance