编辑:已解决,请参阅下文

你好,

在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!
}

10-08 18:05