gpt4 book ai didi

java - 在 Java 9 中是否存在用于将类标记为单例或不可变的注释?

转载 作者:行者123 更新时间:2023-12-04 23:13:15 26 4
gpt4 key购买 nike

在大多数编程语言中,编写 是开发人员的责任。不可变的单例类 等等。

但是,我觉得这有点重复的样板代码 .最近的编程语言为实现这一目标提供了更好的支持。

Java 9 是否引入了任何注释或类似的构造来将类标记为不可变或单例?

最佳答案

不,据我所知,Java 9 中不存在这样的结构。当然,list of new features 中已经记录了这一点。 .

作为旁注,Java EE 具有 @Singleton 注释,它指定一个 bean 是一个单例。

作为进一步的旁注,存在对 Project Lombok 的扩展。叫
lombok-pg它有一个 @Singleton 的实现注解:

@Singleton(style=Singleton.Style.HOLDER)
public class SingletonHolderExample {
private String s;

public void foo() {
}
}

这等效于以下代码:
public class SingletonHolderExample {

private static class SingletonHolderExampleHolder {
private static final SingletonHolderExample INSTANCE = new SingletonHolderExample();
}

public static SingletonHolderExample getInstance() {
return SingletonHolderExampleHolder.INSTANCE;
}

private String s;

public void foo() {
}
}

请注意,Lombok 将 iteslf Hook 到编译过程中,并修改了类。这被一些人认为是一件“hacky”的事情,也许应该有因果关系。另一个缺点是您必须修改 IDE 以使其了解 Lombok 生成的代码。这是通过运行下载的 Lombok jar 文件来完成的。

可以在 here 中找到有关 Lombok 工作原理及其优缺点的很好的总结。 .

关于java - 在 Java 9 中是否存在用于将类标记为单例或不可变的注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50100249/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com