栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

当一个类也扩展了另一个类时,如何使它可扩展?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

当一个类也扩展了另一个类时,如何使它可扩展?

我建议避免

Observable
完全使用该类,而应 定义事件特定的侦听器和相应的事件定义
。然后在您的类中定义一个侦听器列表,以及添加和删除侦听器以及向其传播事件的方法(请参见下文)。

Observable
强制您使用它
java.lang.Object
来表示事件,然后使用来检查事件类型
instanceof
,这是一种丑陋的非OO方法,并使代码更难以理解。如果查看javax.swing包中的类,您会发现它们完全避免使用
Observer
/,
Observable
并且使用类似于以下的方法。

事件定义

public class MyChangeEvent extends EventObject {  // This event definition is stateless but you could always  // add other information here.  public MyChangeEvent(Object source) {    super(source);  }}

侦听器定义

public interface MyChangeListener {  public void changeEventReceived(MyChangeEvent evt);}

类定义

public class MyClass {  // Use CopyonWriteArrayList to avoid ConcurrentModificationExceptions if a  // listener attempts to remove itself during event notification.  private final CopyOnWriteArrayList<MyChangeListener> listeners;  public class MyClass() {    this.listeners = new CopyOnWriteArrayList<MyChangeListener>();  }  public void addMyChangeListener(MyChangeListener l) {    this.listeners.add(l);  }  public void removeMyChangeListener(MyChangeListener l) {    this.listeners.remove(l);  }  // Event firing method.  Called internally by other class methods.  protected void fireChangeEvent() {    MyChangeEvent evt = new MyChangeEvent(this);    for (MyChangeListener l : listeners) {      l.changeEventReceived(evt);    }  }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/453574.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号