Java - "创建"的目的是什么?实例化新对象的方法?

时间:2017-11-16 01:45:22

标签: java constructor

我使用Java的大部分经验都是在课堂设置中,编辑我自己的代码。我终于冒险进入破译别人代码的令人兴奋的世界,我对此感到疑惑:

public class MyClass {

    // Some fields here
    // A constructor there
    // Setters and getters abound

    public static MyClass create() {
        return new MyClass();
    }
}

我想知道这种方法的目的是什么。写MyClass foo = new MyClass();而不是写MyClass foo = MyClass.create();似乎更麻烦。这是我不知道的某种Java习语吗?完全没必要吗?在构造函数采用任何参数的类中,它可能在某种程度上更有用吗?这笔交易是什么?

谢谢!

2 个答案:

答案 0 :(得分:0)

这是一个非常有用的习语,静态工厂方法。它可以完全控制新实例的创建,无论它是一个不同的实例,一个缓存的实例等。只有构造函数设置为private才有意义。

public class MyClass {

  private MyClass() {}

  public static MyClass create() {
      return new MyOtherClass();
  }

  private static class MyOtherClass extends MyClass {
    ...
  }
}

答案 1 :(得分:-1)

静态工厂方法。

构造函数通常是私有的,这样可以通过一种方法控制新对象的创建。

进一步阅读静态构建器类。