以下是一个例子:
有一个基本类(A)可以处理许多不同的类(比如B,C,D都可以扩展P)。在A类中,我需要调用类似的函数:
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();
}
}
但这不起作用,因为它说不能向我投射变量。
我如何实现所需的行为?另外,我无法修改P并使其实现I。
答案 0 :(得分:0)
我认为太晚了,但是:
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));
}
答案 1 :(得分:0)
我认为你不需要明确地将变量强制转换为I。 一旦你检查它是否是' I'的实例,直接调用该方法并让程序在运行时决定...将根据实际对象调用,引用变量引用。