У меня есть класс с защищенным свойством, доступ к которому возможен только из этого класса.Таким образом, компилятор справедливо говорит, что доступ может быть закрытым.
Однако у меня также есть метод 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;
}
}
И пока мы обсуждаем этот вопрос, есть ли лучший способ избавиться от непроверенногоисключение наложения, кроме простого подавления, когда я знаю, что оно всегда будет успешным?