System类是单子类、抽象类还是什么类?

问题描述 投票:0回答:1

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

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

java singleton system localdate
1个回答
1
投票

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

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

它不是抽象的

public final class System {

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

Java不允许你把方法放在一个类之外,所以有时结果是一个完全没有实例的 "类",就像这样。

© www.soinside.com 2019 - 2024. All rights reserved.