在大多数编程语言中,开发人员负责编写不可变、单例类等。
但是,我觉得这是一种重复的样板代码。最近的编程语言为实现这一目标提供了更好的支持。
Java 9是否引入了任何注释或类似的构造来将类标记为不可变或单例?
发布于 2018-04-30 12:20:57
不,据我所知,Java9中不存在这样的构造。当然,这在新特性列表中是有记录的。
顺便提一句,Java有一个@Singleton注释,它指定bean是一个单例。
另外,还需要注意的是,Lombok项目有一个名为隆布克的扩展,它具有@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链接到编译过程中,并修改类。有些人认为这是一件“讨厌”的事情,也许应该谨慎使用。另一个缺点是,您必须修改IDE才能理解Lombok生成的代码。这是通过运行下载的Lombok文件来完成的。
关于Lombok工作原理的一个很好的总结,以及它的优缺点,可以找到这里。
发布于 2018-04-30 12:20:18
在Java中,您可以使用@Singleton:
@Singleton
@Startup
public class mySingleton {....}我通常也会在@Startup中使用它。
关于Singleton 这里的更多信息
希望这能有所帮助。
https://stackoverflow.com/questions/50100249
复制相似问题