我有三个班。我想execute根据我在通过 MyChild 类调用此方法时设置的标志有条件地在 Parent 类的方法中执行 CodeBlock2。出于遗留目的,修改executeParent 类中方法的签名以具有额外的布尔参数是不可能的。
Q1。在 CPP 中,我使用了lambda 函数来实现类似的效果;以我的经验,这涉及整个包中的大量代码修改,其中使用了等效的 Parent 类。鉴于我的更改的重要性和覆盖范围,我会避免这样做。Java是否有一些类似或更简单的方法来实现这一点?
Q2。我认为在 Parent 类中使用带有标志的实例变量也是可能的,也许不那么优雅。有人也可以加入这个解决方案吗?
public abstract class Parent extends GrandParent
{
@override
public void execute(String A)
{
// CodeBlock1
// CodeBlock2 // I wanna put this under if condition based on a flag in MyChild
// CodeBlock3
}
}
public class Child extends Parent
{
@override
protected boolean someMethod()
{
// code
}
}
public class MyChild extends GrandParent
{
@override
public boolean execute(String A)
{
String B = "123";
child.execute(B);
// child.execute(B, true); // what I wanna do
}
private Child child;
}