Dav*_*iel 5 java date java-8 java-time
在新的日期包的Java 8中,我们使用“更改新日期()”到“LOCALDATE的。的()”。
Date d = new Date(year, month, dayOfMonth); //Old way
LocalDate d2 = LocalDate.of(year, month, dayOfMonth); //new way
Run Code Online (Sandbox Code Playgroud)
当您想要一个新对象时,您通常使用new关键字。这是创建新对象的直观方式。
有时,当您需要延迟初始化的单例时,您可以使用静态方法来获取实例。在这种情况下,您必须调用它,getInstance()以便开发人员知道会发生什么。
这种新语法使代码不那么直观。它迫使您学习如何处理特定对象,而不是简单地使用它们。
这种变化有什么好的理由吗?
通常静态工厂方法比构造函数更受欢迎,原因有几个,
Collections.emptyList();public static final List EMPTY_LIST = new EmptyList<>();
public static final <T> List<T> emptyList() {
return (List<T>) EMPTY_LIST;
}
Run Code Online (Sandbox Code Playgroud)
它急切地创建一个单例列表并在每次调用时返回它,从而节省使用构造函数时会发生的不必要的开销。
由于上述原因,在当今的编程中,静态工厂比构造函数更受欢迎。但是,您仍然可以new根据情况将关键字与构造函数一起使用。