我有一个名为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。
我该如何调和?处理这两种方式似乎是相互排斥的。
答案 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
}
显然你可以把它变成单线;我认为这让它更清晰一点。