Существуют ли аннотации для маркировки класса как одноэлементного или неизменяемого в Java 9? - PullRequest
0 голосов
/ 30 апреля 2018

На большинстве языков программирования разработчик обязан писать неизменяемые одноэлементные классы и т. Д.

Однако я чувствую, что это своего рода повторный шаблонный код . Более поздние языки программирования обеспечивают лучшую поддержку для достижения этой цели.

Введена ли в Java 9 какая-либо аннотация или аналогичная конструкция для пометки класса как неизменяемого или одиночного?

Ответы [ 2 ]

0 голосов
/ 30 апреля 2018

Нет, насколько я знаю, в Java 9 таких конструкций не существует. Конечно, это было бы задокументировано в списке новых функций .


В качестве примечания, Java EE имеет аннотацию @Singleton, которая указывает, что компонент является синглтоном.


В качестве дополнительного примечания, Project 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 подключает себя к процессу компиляции и изменяет классы. Некоторые считают это «хакерским» делом, и, возможно, его следует использовать с причинно-следственной связью. Другим недостатком является то, что вам нужно изменить IDE, чтобы он понимал, какой код генерирует Lombok. Это делается путем запуска загруженного файла Jar Lombok.

Хорошее резюме того, как работает Lombok, с его плюсами и минусами, можно найти здесь .

0 голосов
/ 30 апреля 2018

В Java EJB вы можете использовать @Singleton:

@Singleton
@Startup
public class mySingleton {....}

Обычно я использую его и с @Startup.

Подробнее о синглтоне здесь

Надеюсь, это поможет.

...