我正在自学Java,对于Java的构造器和静态工厂方法不是特别理解,平常用new创建对象习惯了,也不是特别明白怎么使用静态工厂方法,希望有人可以指导一下,
我正在自学Java,对于Java的构造器和静态工厂方法不是特别理解,平常用new创建对象习惯了,也不是特别明白怎么使用静态工厂方法,希望有人可以指导一下,
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
静态工厂方法,本质上就是用静态方法返回类的一个实例。通过把构造方法封装起来,只有类内才能进行调用,而类外部不能知道相关构造方法的细节,只能通过静态方法进行调用。直观来讲就是把
A a = new A()
转变为A a = A.createA()
。优点有以下几点:比起构造方法来说,静态方法由于有名字更为直观;当创建对象比较复杂的时候,使用可以通过传入不同的参数来完成对不同对象的创建,也包括该类的子类实例,而这些信息对于调用者来说是隐藏的,这个特性在Java源码中被经常用到;当对象的创建比较复杂的时候,比如一些连接的创建,可以把这些初始化工作交给静态工厂方法。
常见的几个静态工厂方法有:
String.valueOf()
,Optional.of()
,单例模式中获得当前单例的方法。下面是一个简单的例子。