0

像这样的类LocalDate是不可变的,它有一个私有构造函数,每次我们想要它的对象时,我们都必须调用它的静态方法,比如LocalDate.now()or LocalDate.of(year, month, day)。这些方法使用new关键字并调用该私有构造函数,因此每次都会创建一个“新引用”。它不是一个单例类,因为我们可以同时拥有多个对象。

但是System上课呢?看起来LocalDate,它有一个私有构造函数,但它没有调用它的静态方法。这个类,也不是抽象的,为什么java程序员要写System一个没有人能做对象的类呢?它背后的设计模式是什么?哪些类是这样的?

4

1 回答 1

1

它有一个从不调用的私有构造函数,因此永远不会有任何实例(单例需要一个)。

/** Don't let anyone instantiate this class */
private System() {
}

它不是抽象的

public final class System {

System更像是命名空间。它只是一堆静态方法和常量的容器。

Java 不允许您将方法放在类之外,因此有时结果是像这样完全没有实例化的“类”。

于 2020-05-13T09:56:39.950 回答