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

发布于 2022-09-13 00:38:51 字数 84 浏览 28 评论 0

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夜还是长夜 2022-09-20 00:38:51

静态工厂方法,本质上就是用静态方法返回类的一个实例。通过把构造方法封装起来,只有类内才能进行调用,而类外部不能知道相关构造方法的细节,只能通过静态方法进行调用。直观来讲就是把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);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文