Wou*_*ter 4 java methods overriding
我目前正在研究java me应用程序,我有这个代码:
svgForm.setSVGEventListener(new SVGEventListener(){
public void keyPressed(int i) {
System.out.println("Val"+i);
}
public void keyReleased(int i) {
System.out.println("Val"+i);
}
public void pointerPressed(int i, int i1) {
return;
}
public void pointerReleased(int i, int i1) {
return;
}
public void hideNotify() {
return;
}
public void showNotify() {
return;
}
public void sizeChanged(int i, int i1) {
return;
}
});
Run Code Online (Sandbox Code Playgroud)
但是,如您所见,我不需要覆盖所有方法.更糟糕的是,通过覆盖它们我失去了功能.有没有办法保留原始方法,只覆盖某些方法?
ska*_*man 11
你别无选择,需要全部实施.但是,一个常见的模式是有一个基类,它提供接口中方法的无操作实现,然后在需要做一些有用的事情时扩展该基类:
public class BaseSVGEventListener implements BaseSVGEventListener {
public void keyPressed(int i) {}
public void keyReleased(int i) {}
public void pointerPressed(int i, int i1) {}
public void pointerReleased(int i, int i1) {}
public void hideNotify() {}
public void showNotify() {}
public void sizeChanged(int i, int i1) {}
}
Run Code Online (Sandbox Code Playgroud)
然后:
svgForm.setSVGEventListener(new BaseSVGEventListener (){
public void keyPressed(int i) {
System.out.println("Val"+i);
}
public void keyReleased(int i) {
System.out.println("Val"+i);
}
});
Run Code Online (Sandbox Code Playgroud)
有在Java AWT/Swing的API的许多这样的例子,例如FocusListener和FocusAdapter:
用于接收键盘焦点事件的抽象适配器类.此类中的方法为空.此类存在是为了创建侦听器对象的便利.
扩展此类以创建
FocusEvent侦听器并覆盖感兴趣事件的方法.(如果实现了FocusListener接口,则必须定义其中的所有方法.这个抽象类为它们定义了所有的null方法,因此您只需要为您关心的事件定义方法.)
Java API调用这些"适配器",尽管这是对该术语的一个相当可疑的使用."适配器模式"应该用于使一种类型适应另一种类型,这不是这些API类所做的.
| 归档时间: |
|
| 查看次数: |
4174 次 |
| 最近记录: |