gpt4 book ai didi

java - 如何在 Java 中扩展最终类

转载 作者:太空狗 更新时间:2023-10-29 22:48:27 24 4
gpt4 key购买 nike

这是我现在实际面临的问题。我有一个类,比如说 Foo,这个类定义了一个名为 getBar 的方法,它返回一个 Bar 实例。 Bar 类在 Foo 中定义,并声明为 public static final。我想要做的是定义一个扩展 Foo 的类 MyFoo 但我还想用 MyBar 扩展 Bar > 通过添加我自己的功能(方法、属性等)。我还希望 getBar 返回 MyBar

问题是 Bar 是最终的。这是我想要做的事情的说明:

public class Foo {

Bar bar = new Bar();

public Bar getBar(){
return bar;
}

....

public static final class Bar {

}
}

我想做的是:

public class MyFoo extends Foo {


public MyBar getBar(){ // here I want to return an instance of MyBar

}

public static final class MyBar extends Bar { // That's impossible since Bar is final

}
}

我怎样才能做到这一点?

[编辑] 我正在为我的问题添加更多细节。我实际上正在为 Jenkins 开发一个插件,在搜索之后,我意识到有一个插件提供了我想要做的基本功能,FooBar。我想自定义 FooBar,这样它就能满足我的需要。Foo 是插件的主类,它扩展了一个名为 Builder 的类。 Foo 定义了一个名为 perform 的方法,其中包含执行构建的所有操作。Bar 包含用于配置目的的操作,Foo 需要 Bar 来获取这些信息。

所以我想做的是用 MyFoo 扩展 Foo 并用 MyBar 添加一些配置。如您所见,MyFoo 将需要通过调用 getBar();

来获取这些配置

第二件事是我无法控制 MyFooMyBar

的实例化

阻碍我的是我不能扩展 Bar。我怎样才能做到这一点?

最佳答案

基本上,你不能。看起来设计 Bar 的开发人员打算不扩展它 - 所以你不能扩展它。您需要寻找一种不同的设计 - 可能是一种不太使用继承的设计……当然,假设您不能更改现有代码。

(如果不了解这里的真正目标 - 整个系统的设计,很难给出更具体的建议。)

关于java - 如何在 Java 中扩展最终类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13294629/

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