请问Java的构造器和静态工厂方法有什么区别?另外如何使用静态工厂方法去创建对象?

我正在自学Java,对于Java的构造器和静态工厂方法不是特别理解,平常用new创建对象习惯了,也不是特别明白怎么使用静态工厂方法,希望有人可以指导一下,

阅读 1.4k
1 个回答

静态工厂方法,本质上就是用静态方法返回类的一个实例。通过把构造方法封装起来,只有类内才能进行调用,而类外部不能知道相关构造方法的细节,只能通过静态方法进行调用。直观来讲就是把A a = new A() 转变为A a = A.createA()

优点有以下几点:比起构造方法来说,静态方法由于有名字更为直观;当创建对象比较复杂的时候,使用可以通过传入不同的参数来完成对不同对象的创建,也包括该类的子类实例,而这些信息对于调用者来说是隐藏的,这个特性在Java源码中被经常用到;当对象的创建比较复杂的时候,比如一些连接的创建,可以把这些初始化工作交给静态工厂方法。

常见的几个静态工厂方法有:String.valueOf(), Optional.of(),单例模式中获得当前单例的方法。

下面是一个简单的例子。

public class A {
    private String a;
    public static A createA(String a) {
       // TODO 这里也可以加入一些其他工作
       return new A(a);
    }
}

String a = "abc";
A a = A.create(a);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题