如何在方法内覆盖 Runnable?
How to override Runnable inside a method?
请给我以下问题的建议。
我有 class A & class B
如何在 class B?
中的方法 foo 中覆盖 Runnable
class A {
//some code
.......
protected void foo() {
//some code
.......
//adding click listener to instance of MyButton
myButton.show(new Runnable(){
@Override
public void run() {
.......
}
});
//some code
.......
}
//some code
.......
}
class B extends A {
@Override
protected void foo() {
super.foo();
//some NEW code
.......
//adding click listener to instance of MyButton
myButton.show(new Runnable(){
@Override
public void run() {
//Copied&Pasted old code
.......
//NEW code
.......
}
});
}
}
我可以在不从 super 复制和粘贴现有代码的情况下向按钮的处理程序(在 myButton 中运行)添加新代码吗?怎么样?
如果您想重新使用逻辑,则必须使用命名 class 实例而不是匿名 class 实例。
例如:
class A {
...
static class ButtonLogic implements Runnable
{
public void run() {...}
}
protected void foo() {
//adding click listener to instance of MyButton
myButton.show(new A.ButtonLogic());
.......
}
}
然后 B 可以覆盖该逻辑:
class B extends A {
@Override
protected void foo() {
super.foo();
//some NEW code
.......
//adding click listener to instance of MyButton
myButton.show(new A.ButtonLogic(){
@Override
public void run() {
super.run();
.......
//NEW code
.......
}
});
}
}
请给我以下问题的建议。
我有 class A & class B 如何在 class B?
中的方法 foo 中覆盖 Runnableclass A {
//some code
.......
protected void foo() {
//some code
.......
//adding click listener to instance of MyButton
myButton.show(new Runnable(){
@Override
public void run() {
.......
}
});
//some code
.......
}
//some code
.......
}
class B extends A {
@Override
protected void foo() {
super.foo();
//some NEW code
.......
//adding click listener to instance of MyButton
myButton.show(new Runnable(){
@Override
public void run() {
//Copied&Pasted old code
.......
//NEW code
.......
}
});
}
}
我可以在不从 super 复制和粘贴现有代码的情况下向按钮的处理程序(在 myButton 中运行)添加新代码吗?怎么样?
如果您想重新使用逻辑,则必须使用命名 class 实例而不是匿名 class 实例。
例如:
class A {
...
static class ButtonLogic implements Runnable
{
public void run() {...}
}
protected void foo() {
//adding click listener to instance of MyButton
myButton.show(new A.ButtonLogic());
.......
}
}
然后 B 可以覆盖该逻辑:
class B extends A {
@Override
protected void foo() {
super.foo();
//some NEW code
.......
//adding click listener to instance of MyButton
myButton.show(new A.ButtonLogic(){
@Override
public void run() {
super.run();
.......
//NEW code
.......
}
});
}
}