Java的isInstance on Object?

时间:2014-06-30 16:50:25

标签: java

我有一个名为Object的{​​{1}}和一个名为handler的{​​{1}}实例。我想知道Class是否实现protocolInterface。据我所知,如果不诉诸反思,这是不可能的。

handler

导致一系列解析错误,protocolInterface if (handler instanceof protoInterface.getClass()) 等等。所以我想我尝试')' expected方法,但是因为illegal start of expression是在isInstance()类型中,它会调用handler' s Object,它本身并不知情。因此,即使Object实现IsInstance(),它也会返回false。

我该如何调和?处理这两种方式似乎是相互排斥的。

3 个答案:

答案 0 :(得分:5)

isInstance()上有一个Class方法可以告诉您给定对象是否是目标类型的实例,例如:

if (protoInterface.getClass().isInstance(handler)) { ... }

答案 1 :(得分:0)

试试这个:

if(protoInterface.getClass().isAssignableFrom(handler.getClass())

答案 2 :(得分:0)

Class handlerClass = handler.getClass();
Class protocolClass = protocolInterface.getClass();
if (protocolClass.isAssignableFrom(handlerClass)) {
    ... // yadda yadda yadda
}

显然你可以把它变成单线;我认为这让它更清晰一点。