我有一个带有受保护属性的类,只能在此类中访问。因此,编译器正确地说访问可以是私有的。
但是,我还有一个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;
}
}
当我们讨论这个主题时,是否有更好的方法可以摆脱未经检查的强制转换异常,而不仅仅是在我知道它将永远成功时抑制它?