Jav*_*ser 4 java singleton immutability java-9
在大多数编程语言中,开发人员有责任编写不可变的单例类等。
但是,我觉得这是重复的样板代码。更新的编程语言为实现此目的提供了更好的支持。
Java 9是否引入了任何注释或类似构造来将类标记为不可变或单例?
不,据我所知,Java 9中不存在这样的构造。当然,新功能列表中已记录了这些构造。
作为附带说明,Java EE具有@Singleton注释,该注释指定Bean是单例。
进一步说明,Lombok项目有一个扩展,称为
lombok-pg,它具有@Singleton注释的实现:
@Singleton(style=Singleton.Style.HOLDER)
public class SingletonHolderExample {
private String s;
public void foo() {
}
}
Run Code Online (Sandbox Code Playgroud)
这等效于以下代码:
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() {
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,Lombok将iteslf挂接到编译过程中,并修改类。某些人认为这是一件“棘手的事情”,也许应该谨慎使用。另一个缺点是,您必须修改IDE才能了解Lombok生成的代码。这是通过运行下载的Lombok jar文件来完成的。
在这里可以找到有关龙目岛工作原理的一个很好的总结,它有其优点和缺点。
小智 4
在Java EJB中你可以使用@Singleton:
@Singleton
@Startup
public class mySingleton {....}
Run Code Online (Sandbox Code Playgroud)
我通常也将它与@Startup 一起使用。
有关单例的更多信息请参见这里
希望有帮助。
| 归档时间: |
|
| 查看次数: |
3854 次 |
| 最近记录: |