gpt4 book ai didi

java - 替代多重继承来扩展库

转载 作者:行者123 更新时间:2023-12-02 01:49:25 24 4
gpt4 key购买 nike

我目前正在尝试扩展 WPILib 。不幸的是我需要多重继承。

我画了一个问题的uml图(原谅我的蹩脚的笔迹) enter image description here

正如您通过红色箭头所看到的,我需要从两个类扩展。

我无法更改 WPI 框中的任何内容,并且 ICommand 中的 requires 方法需要 CommandBase 中的一些函数,因此我可以'不要在 ICommand 中将其设为默认值。

我该如何解决这个问题?

如果你想尝试一些东西,这里是 my github repo .

最佳答案

如果我理解正确,您希望拥有自定义类(SequentialCommandGroup、ParallelCommandGroup)来从库类扩展,而且还希望拥有自己的“命令”部分实现。

当然,在 Java 中你不能有多重继承,但我认为你可以利用 Proxy pattern在这里。

您的类仍将从库类继承,但 ICommand 接口(interface)的实现可以委托(delegate)给 Command 对象。

示例:

public class MyParallelCommandGroup extends ParallelCommandGroup implements ICommand {

private Command commandProxy;

public MyParallelCommandGroup() {
// instantiate commandProxy here, or inject it as constructor param
}

@Override
public void requires() {
commandProxy.requires();
}

}

您甚至可以将整个 Command 类提取到一个接口(interface)并在代理类中实现它。我不确定这是否涵盖您的用例,但也许它会帮助您找到合适的解决方案。

关于java - 替代多重继承来扩展库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70505650/

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