如何 return 实体的单例对象

How to return a singleton object for an entity

如何return一个实体的单例对象,用什么比较合适?

https://docs.oracle.com/javase/8/docs/api/java/util/Collections.html#singletonList-T-
https://docs.oracle.com/javase/9/docs/api/java/util/List.html#of-E-

要么。没有具体情况没办法给出更具体的建议。

或由 Oracle Dr. Joshua Bloch’s advice in Effective Java and use an enum. See tutorial on enums

public enum ExampleSingleton {
    INSTANCE;
}

用法:

System.out.println(
    ExampleSingleton.INSTANCE
);

如果需要,您可以向该枚举添加构造函数和方法 class。枚举也可以实现接口。并且,Java 16 中新增了一个 enum can be defined locally.

API Support: SingletonList 支持排序 API 而 List.Of

则不支持

Null Support: 如果您打算(出于某种奇怪的原因)有意创建一个包含空元素的单元素列表,则不能使用 List:of。它会 NullPointerException 你的脸(是的,朋友们,“NullPointerException”可以用作动词)。 Array::asList 和基于流的方法也是如此。 Collections::singletonList 会愉快地创建一个空列表。

Performance: Collections::singletonList 的吞吐量略高,平均执行时间比 List::of 快一点,但它们提供的性能基本相同。

结论:

Collections::singletonList 和 List:of 都是创建单元素列表的绝佳选择。如果您有幸使用支持这两种方法(9 及更高版本)的 Java 版本,那么我建议使用 List:of,因为它易于使用、可读性和更好的记录不变性.