在Java中是否有可能让构造函数返回该类的另一个实例,而不是构造/返回它自己?

Java中是否有可能让构造函数返回该类的另一个实例,而不是构造/返回它自己?

有点像

public class Container {
    private static Container cachedContainer = new Container(5,false);
    private int number;
    public Container(int number, boolean check) {
        if (number == 5 && check) {
            return cachedContainer;   // <-- This wouldn't work
        }
        this.number = number;
    }
}

在该示例中,如果您创建一个包含数字5的对象(并使用“check”标志),它将“中断”构造,而是为您提供一个已经包含5的预先存在的对象.任何其他数字都不会导致中断.

最佳答案
不,这就是静态factory method pattern的用武之地

您可以执行自定义计算并确定是否在静态工厂方法中创建实例

考虑这个例子:

public static Container createContainer(int number, boolean check) {
    if (number == 5 && check) {
      // returned cached instance
    }
    // construct new instance and return it
}

从有效的java

第1项:考虑静态工厂方法而不是构造函数

摘要:

>它可以有名称与客户进行清晰的沟通
>您可以执行自定义逻辑,而不必每次都创建实例
>你可以返回一个子类型

另见

> How to create a Class with multiple constructors that use the same parameter type

转载注明原文:在Java中是否有可能让构造函数返回该类的另一个实例,而不是构造/返回它自己? - 代码日志