这是我的整体工作流程。首先创建一个接口:
public interface foo {
void bar(Baz b);
}
然后,例如,制作一个具有不同对象的向量,这些对象都实现了所述接口:
myVector.add(new Ex); //both Ex and Why implement foo.
myVector.add(new Why);
最后,使用界面:
for(int i=0; i<myVector.size(); i++) {
myVector.get(i).bar(b);
}
但是,由于显而易见的原因,这会产生编译时错误:
方法 bar() 未为 Object 类型定义
投射不起作用,因为 Ex 和 Why 不相关。Try-catch 转换为 Ex 然后Why 是一个可怕的变通方法。让 Ex 和Why都扩展 Bar_doers 听起来也不简洁,因为那将取消接口。
如何执行关心对象是否实现给定接口而不是对象是否属于给定类的操作?