【发布时间】:2013-09-24 04:33:42
【问题描述】:
public interface Component{}
public class AppManager {
public void doWork(){
SomeComponent comp = new SomeComponent ();
AddComponentToList(comp);
}
public void AddComponentToList(Component compo){
componentList.add(compo);
}
/* Give me the component I want. */
public Component getComponent(Component comp){
for (Component component : getComponentList()) {
if (component instanceof comp) {
return component;
}
}
}
private ArrayList<Component> componentList = new ArrayList<Component>();
}
public class SomeComponent implements component {
public void MyMethod() {
appManager.getComponent(SomeComponent );
}
public void setAppMnger(AppManager appm){
this.appManager = appm;
}
private AppManager appManager ;
}
在上面的代码中,AppManger 有一个组件列表。组件相互通信。因此,如果一个组件想知道另一个组件实例,它会调用 AppMnger getComponent(comp) 方法。但是当我使用 instanceof 运算符时出现错误。我不希望每个组件都比较列表,但我想将该任务委托给 AppMnger,因为他是知道它创建的组件的人。 艾米想?
【问题讨论】:
-
旁注 - 我强烈建议您避免删除元音,因为这样简洁。 “AppManager”甚至“ApplicationManager”比“AppManger”更好
-
关于
component和comp之间的关系,您可能会想问多个问题,例如“它们有相同的类吗?”或“它们都有接口吗?”实现?”,或“它们都实现了这组接口中的任何一个吗?”。所有这些问题都可以通过两个参考来回答。你能说得更具体点吗? -
我想检查并从 componentList 中找到我想要的确切的具体类实例。我正在传递 appMnger.getComponent(SomeComponent);我想从列表中找到 SomeComponent 实例。
标签: java interface compare delegation instanceof