Ваш класс ChannelBean
реализует Serializable
.Для того чтобы класс (или лучше: объект этого класса) был сериализуемым, все его поля также должны быть сериализуемыми.FindBugs предупреждает вас, что одно поле вашего класса ChannelBean
не сериализуемо, в этом случае ваш EJB SubscriptionDao
.В случае, если вы когда-нибудь попытаетесь сериализовать ChannelBean, это, скорее всего, приведет к исключению во время выполнения, поскольку он не сможет его сериализовать из-за невозможности сериализации EJB-компонента.
Чтобы исправить это, либо выполните SubscriptionDao
serializable, или сделать ChannelBean
не реализующим Serializable.
предоставить внутреннее представление: вы непосредственно возвращаете массив.Любой получатель этого массива может перезаписать значения в нем, например:
String[] answers = object.getCorrectAnswers();
answers[0] = "My Answer";
сейчас, «Мой ответ» будет правильным ответом И будет возвращен в будущих вызовах getCorrectAnswer()
.
Случай с setCorrectAnswer()
аналогичен:
String [] answers = new String [] {"Foo"};object.setCorrectAnswers (ответы);answers [0] = "Бар";
Теперь "Бар" будет правильным ответом.
Чтобы исправить это, обычно лучше сохранить копию / клон массива, поэтомуего нельзя изменить извне.
Integer.valueOf()
создает новый объект, а Integer.parseInt()
- нет.Таким образом, второе является минимально более эффективным, так как не требует дополнительных затрат памяти.(хотя хорошая JVM может его оптимизировать, поэтому разница, скорее всего, не измерима, но все же лучше использовать parseInt
).