【发布时间】:2023-03-27 05:54:01
【问题描述】:
假设我有课:
class A {
protected int x; // no public getter, setter
}
现在我想扩展 A 类,覆盖“x”变量。答案是:
public class SomeClass {
someMethod() {
A extendedClass = new MyExtension(5);
}
class MyExtension extends A {
public MyExtension(int x) {
super.x = x;
}
}
}
我的问题是:有没有可能在不单独定义嵌套类的情况下做到这一点?我的意思是这样的
someMethod() {
A extendedClass = new A() {
// here do something like super.x = 5;
}
}
我尝试使用Calling newly defined method from anonymous class,但它不允许我实例化 A 类。我也不想使用反射。
我不想定义嵌套类只是为了覆盖一个属性。问题的根源是 Spring-integration ImapMailReceiver,我想在其中覆盖任务调度程序。如下:
final ImapMailReceiver imapMailReceiver = new ImapMailReceiver() {
super.setTaskScheduler(MYTASKSCHEDULERHERE);
}
【问题讨论】:
标签: java nested abstract protected anonymous