Java - 确保对象实现接口

时间:2010-01-16 14:19:17

标签: java interface

编辑:解决,见下文

您好,

在Java中,我得到了一个可以属于任何类的对象。但是 - 该对象将始终必须实现一个接口,因此当我调用接口定义的方法时,该对象将包含该方法。

现在,当您尝试在Java中的通用对象上调用自定义方法时,它很难打字。我怎么能以某种方式告诉编译器我的对象确实实现了该接口,因此调用该方法是可以的。

基本上,我正在寻找的是这样的:

Object(MyInterface) obj; // Now the compiler knows that obj implements the interface "MyInterface"
obj.resolve(); // resolve() is defined in the interface "MyInterface"

我怎么能用Java做到这一点?

答案:好的,如果界面名为MyInterface,你可以放

MyInterface obj;
obj.resolve();

很抱歉在发布之前没想过......

3 个答案:

答案 0 :(得分:3)

您只需使用type cast

即可
((MyInterface) object).resolve();

通常最好进行检查以确保此演员表有效 - 否则,您将获得ClassCastException。你不能将没有实现MyInterface的任何东西变为MyInterface对象。执行此检查的方法是使用instanceof运算符:

if (object instanceof MyInterface) {
    // cast it!
}
else {
    // don't cast it!
}

答案 1 :(得分:1)

if (object instanceof MyInterface) {
    ((MyInterface) object).resolve();
}

答案 2 :(得分:1)

MyInterface a = (MyInterface) obj;
a.resolve();

((MyInterface)obj).resolve();

java编译器使用静态类型来检查方法,因此您必须将对象转换为实现接口的类型或转换为接口本身。