例如,请考虑以下代码:
public class Stat<E> {
// any data
// lalala
public void do_smt(E any_ob) {
// if (any_ob has some method)
}
}
在 public void do_smt(...)中我需要检查作为参数传递的对象是否有某种方法
我认为接口可能会派上用场,但我不知道如何做到这一点
请详细解释......
提前致谢
答案 0 :(得分:5)
请考虑以下代码:
public interface SomeInterface {
void someMethod();
}
public class Stat<E extends SomeInterface> {
// any data
// lalala
public void do_smt(E any_ob) {
// This is safe since you force E to implement SomeInterface
any_ob.someMethod();
}
}
作为参数传递的对象属于E
类型,但您也强制它在声明SomeInterface
中为<E extends SomeInterface>
类型。因此,您可以安全地将其用作SomeInterface
类型。
此外,如果实现接口,则必须实现其方法:
public class SomeClass implements SomeInterface {
@Override
public void someMethod() {
// Must be implemented - otherwise you get compiler errors
}
}
这个article以简单明了的方式解释了Java接口。