gpt4 book ai didi

Java多重继承,无需源代码

转载 作者:行者123 更新时间:2023-12-01 18:16:43 24 4
gpt4 key购买 nike

我有一个名为 Thing 的类和一个名为 Robot 的类。 Thing 有一个 public void setBlocksExit()Robot 有一些我也想要的方法。

我已经扩展了 Robot,但我还想要 Thing 中的 setBlocksExit()。我会创建一个具有 setBlocksExit() 的接口(interface),然后创建一个类,例如:

public class C extends Robot implements BlockExit {}

问题是我无法访问 ThingRobot 的源代码。我正在使用教育包'becker.jar',并且所有代码都已编译,因此我无法访问它来提取接口(interface)。我有什么选择?

最佳答案

一种替代方法是将 RobotThing 包装在您自己的包装类中

public class MyRobot extends Robot implements IBlockingObject

public class MyThing extends Thing implements IBlockingObject

您可以在其中强制接口(interface)

interface IBlockingObject{
void setBlocksExit(boolean blocksExit);
}

然后您可以在代码中的其他位置可靠地使用 IBlockingObject,而无需太多开销。

另一种选择是编写一个包含 RobotThing 作为成员字段的类

类似

public class RobotThing extends IBlockingObject{
// This is now a robot thing...
private Robot mRobot;
private Thing mThing;

@Override
public void setBlocksExit(boolean blocksExit){
mRobot.setBlocksExit(blocksExit);
mThing.setBlocksExit(blocksExit);
}
}

我认为从长远来看,第一个对您来说会更灵活。

关于Java多重继承,无需源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29087255/

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