2012-03-13 2 views
1

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

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

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

ответ

4

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

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

+0

Когда я сделал свой конструктор частным, у меня возникла проблема во время загрузки класса во время выполнения, так что ha, чтобы удалить конструктор, есть ли способ сообщить PMD о подавлении предупреждений, я ставлю @SuppressWarnings («PMD») также пытался использовать @SuppressWarnings («PMD.UseSingletone»), но он не подходил, некоторые предупреждения не могут быть подавлены. –

+0

Для J2EE вам необходимо оставить конструктор общедоступным, чтобы его можно было вызвать с помощью отражения. Я не уверен, как вы подавляете предупреждения с PMD :( –

0

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

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