gpt4 book ai didi

Java:来自基类的单例

转载 作者:行者123 更新时间:2023-11-30 07:09:49 26 4
gpt4 key购买 nike

假设我们有基类:

public class Base {
public Base(int i) {
/* ... */
}
/* ... */
}

我们要基于这个类创建单例。问题是类有公共(public)构造函数,所以扩展它会导致单例也有公共(public)构造函数:

public class SingletonBase extends Base {
private static final SingletonBase _instance = new SingletonBase();

private SingletonBase() {
super(0);
}

public SingletonBase(int i) { // Want to avoid this!
super(i)
}

public static void getInstance() {
return _instance;
}
/* ... */
}

Singleton当然不能有public构造函数,所以我们要避免这种情况。那么,什么是最优雅的方式/模式来让适当的 Singleton 具有 Base 类的功能?

编辑:禁止修改基类,因为它来自外部库。

最佳答案

构造函数不是继承的。所以只是
删除这部分,你会得到你需要的。

public SingletonBase(int i) {  // Want to avoid this!
super(i)
}

此外,您可能需要创建 Base
抽象以便任何人都不会错误地实例化它
通过直接调用 Base 构造函数。

public abstract class Base {
public Base(int i) {
/* ... */
}
/* ... */
}

public class SingletonBase extends Base {
private static final SingletonBase _instance = new SingletonBase();

private SingletonBase() {
super(0);
}

public static SingletonBase getInstance() {
return _instance;
}
/* ... */
}

关于Java:来自基类的单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22665410/

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