gpt4 book ai didi

java - 如何在方法内覆盖 Runnable?

转载 作者:行者123 更新时间:2023-11-30 08:54:24 25 4
gpt4 key购买 nike

请给我以下问题的建议。

我有A类和B类如何在类 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 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
.......
}
});


}

}

关于java - 如何在方法内覆盖 Runnable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29408966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com