FindBugs выявляет ошибку EI_EXPOSE_REP, вызванную Array.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 FindBugs выявляет ошибку EI_EXPOSE_REP, вызванную Array.

Сообщение Anonymous »

FindBugs выявляет ошибку под названием EI_EXPOSE_REP со следующим описанием:

EI: может раскрывать внутреннее представление, возвращая ссылку на изменяемый объект
Возврат ссылки на изменяемое значение объекта, хранящееся в одном из полей объекта, раскрывает внутреннее представление объекта. Если доступ к экземплярам осуществляется из ненадежного кода, а непроверенные изменения изменяемого объекта могут поставить под угрозу безопасность или другие важные свойства, вам придется сделать что-то другое. Возврат новой копии объекта является лучшим подходом во многих ситуациях.

Код: Выделить всё

class Person {
private String[] hobbies;
String[] getHobbies(){ return hobbies;}
void setHobbies(String[] hobbies){ this.hobbies = hobbies;}
}
Я знаю несколько решений:
  • getHobbies(){return hobbies.clone ();
  • используйте список вместо массива;
Я хочу знать почему только массив вызывает эту ошибку, в списке нет этой проблемы? Почему массив так отличается от других коллекций?

Подробнее здесь: https://stackoverflow.com/questions/472 ... d-by-array
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»