[英]Check if class implements interface
这是一个例子:
有一个基本类(A)处理许多不同的类(比如说B,C,D都扩展了P)。 在AI类中,需要调用以下函数:
public void doSmth(P variable) {
B b = (B)variable;
b.getSomeImportantInfo();
}
为此,我试图添加一个接口(I)并定义B,C,D来实现它。
麻烦的是,doSmth可以与所有此类(B,C,D)一起使用,而我不希望它们都实现此接口。 所以我正在尝试做这样的事情:
public void doSmth(P variable) {
if(variable instanceof I) {
((I)variable).getSomeImportantInfo();
}
}
但这不起作用,因为它说不能将变量强制转换为I。
如何实现所需的行为? 另外,我无法修改P并使其实现I。
我认为为时已晚,但是:
public static boolean isImplementsInterface(Class interfaze, Class clazz) {
for (Class c : clazz.getInterfaces()) {
if (c.equals(interfaze)) {
return true;
}
}
return false;
}
public static void main(String[] args) {
System.out.println(isImplementsInterface(CharSequence.class, String.class));
}
我认为您不需要显式地将变量类型转换为I。检查完它是否为“ I”的实例后,直接调用该方法,让程序在运行时决定..具体取决于实际对象,参考变量参考。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.