@Singleton class я должен сделать конструктор закрытым

Я пишу класс Singleton в Java EE 6, используя аннотацию @Singleton. Я не объявил конструктор.

Должен ли я явно создавать частный конструктор?

Причина, по которой я спрашиваю, заключается в том, что я использую PMD и правило UseSingleton помечен. Я думаю, что PMD не понимает аннотацию @Singleton?


person Loner shushman    schedule 13.03.2012    source источник


Ответы (2)


PMD рекомендует создать конструктор private, чтобы другие не могли создать экземпляр вашего одноэлементного объекта. Ему неизвестны аннотации Java EE 6.

Вы можете игнорировать это предупреждение.

person Jeff Foster    schedule 13.03.2012
comment
Когда я сделал свой конструктор закрытым, у меня возникла проблема во время загрузки класса во время выполнения, поэтому, если удалить конструктор, есть ли способ сообщить PMD о подавлении предупреждений, я поставил @SuppressWarnings (PMD), также попытался использовать @SuppressWarnings (PMD.UseSingletone), но он не подхватил, некоторые швы предупреждений не могут быть подавлены. - person Loner shushman; 14.03.2012
comment
Для J2EE вам нужно сделать конструктор общедоступным, чтобы его можно было вызывать через отражение. Я не уверен, как вы подавляете предупреждения с помощью PMD :( - person Jeff Foster; 14.03.2012

Нет. Просто добавьте @Singleton в класс компонента.

@Singleton
public class TesterBean {
  private int testCount = 0;
    public int getCount() {
      return testCount++;
    }
}
person Java42    schedule 13.03.2012