首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java 9中是否存在将类标记为单例或不可变的注释?

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

Stack Overflow用户
提问于 2018-04-30 12:09:36
回答 2查看 17.4K关注 0票数 9

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

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

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

EN

回答 2

Stack Overflow用户

发布于 2018-04-30 12:20:57

不,据我所知,Java9中不存在这样的构造。当然,这在新特性列表中是有记录的。

顺便提一句,Java有一个@Singleton注释,它指定bean是一个单例。

另外,还需要注意的是,Lombok项目有一个名为隆布克的扩展,它具有@Singleton注释的实现:

代码语言:javascript
复制
@Singleton(style=Singleton.Style.HOLDER)
public class SingletonHolderExample {
  private String s;

  public void foo() {
  }
}

这相当于以下代码:

代码语言:javascript
复制
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工作原理的一个很好的总结,以及它的优缺点,可以找到这里

票数 9
EN

Stack Overflow用户

发布于 2018-04-30 12:20:18

在Java中,您可以使用@Singleton:

代码语言:javascript
复制
@Singleton
@Startup
public class mySingleton {....}

我通常也会在@Startup中使用它。

关于Singleton 这里的更多信息

希望这能有所帮助。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50100249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档