编辑:已解决,请参阅下文
你好,
在Java中,我得到了一个可以属于任何类的对象。但是-该对象将始终必须实现一个接口(interface),因此当我调用该接口(interface)定义的方法时,该对象将包含该方法。
现在,当您尝试在Java中的通用对象上调用自定义方法时,它会打扰键入。我如何以某种方式告诉编译器我的对象确实实现了该接口(interface),因此调用该方法就可以了。
基本上,我正在寻找的是这样的:
Object(MyInterface) obj; // Now the compiler knows that obj implements the interface "MyInterface"
obj.resolve(); // resolve() is defined in the interface "MyInterface"
如何在Java中做到这一点?
解答:好的,如果该接口(interface)名为MyInterface,则只需输入
MyInterface obj;
obj.resolve();
很抱歉在发布前没有思考....
最佳答案
您只需要使用type cast即可:
((MyInterface) object).resolve();
通常,最好进行检查以确保此强制转换有效-否则,您会得到ClassCastException。您不能将没有将
MyInterface
实现为MyInterface
对象的任何东西拔掉。执行此检查的方法是使用instanceof
运算符:if (object instanceof MyInterface) {
// cast it!
}
else {
// don't cast it!
}