Как избавиться от предупреждения «Доступ закрыт» при доступе из класса, который его определяет? - PullRequest
0 голосов
/ 09 июня 2018

У меня есть класс с защищенным свойством, доступ к которому возможен только из этого класса.Таким образом, компилятор справедливо говорит, что доступ может быть закрытым.

Однако у меня также есть метод clone(), который создает новое значение для этого свойства, чтобы клон имел отдельный экземпляр этого свойства.Но когда доступ к переменной является закрытым, строка, которая обращается к ней из метода clone (в том же файле, обратите внимание), жалуется, что свойство является частным.

Что мне нужно изменить на этокод, чтобы я не получал предупреждение при попытке установить новое значение для свойства?

public abstract class Foo<T extends Foo<T>> implements Cloneable {

  private Gizmo bar = new Gizmo();

  @SuppressWarnings( "unchecked" )
  public T clone() {
    try {
      T copy = (T) super.clone();
      copy.bar = new Gizmo();
      return copy;
    }
    catch ( CloneNotSupportedException e ) {
      // will never happen
      return (T) this;
    }

}

И пока мы обсуждаем этот вопрос, есть ли лучший способ избавиться от непроверенногоисключение наложения, кроме простого подавления, когда я знаю, что оно всегда будет успешным?

...