gpt4 book ai didi

java - 如何覆盖间接调用的方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:20:10 24 4
gpt4 key购买 nike

我不太确定如何正确地命名这个问题,我会尽量描述清楚:。

Interface InterfaceB {
void methodB();
}

Class ClassB implements InterfaceB {
void methodB() {
//...
}
}

Class ClassA {
InterfaceB methodA() {
return new ClassB();
}
}

Class MyClass {
public static void main(String[] args) {
ClassA a = new ClassA();
InterfaceB b = a.methodA();
b.methodB(); // override this guy
}
}

我想覆盖 methodB,而不改变 ClassA 和 ClassB。感谢任何想法。

最佳答案

这是你可以做的:

ClassA a = new ClassA() {//extend class A

InterfaceB methodA() {//Override methodA
return new ClassB() {//extend class B
void methodB() {//Override methodB
//...
}
};
}
};

您已经覆盖了 methodB 而没有更改 A 类或 B 类。话虽如此,您实际上并不需要从 A 类进行扩展。您可以创建一个 factory,将其作为依赖项传递给 ClassA,并将参数传递给 methodA,告诉它应使用 classB 的具体实现调用methodB

关于java - 如何覆盖间接调用的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29874862/

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