Java “如何摆脱警告”;访问是私人的”;从定义它的类中访问时?

Java “如何摆脱警告”;访问是私人的”;从定义它的类中访问时?,java,intellij-idea,clone,Java,Intellij Idea,Clone,我有一个具有受保护属性的类,该类只能从该类中访问。因此,编译器正确地说,访问可以是私有的 但是,我还有一个clone()方法,它为该属性创建一个新值,以便克隆具有该属性的单独实例。但是,当对变量的访问是私有的时,从克隆方法(注意,在同一个文件中)访问它的行会抱怨该属性是私有的 我必须对此代码进行哪些更改,以便在尝试为属性设置新值时不会收到警告 public abstract class Foo<T extends Foo<T>> implements Cloneable

我有一个具有受保护属性的类,该类只能从该类中访问。因此,编译器正确地说,访问可以是私有的

但是,我还有一个
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;
    }

}
公共抽象类Foo实现可克隆{
专用Gizmo栏=新建Gizmo();
@抑制警告(“未选中”)
公共T克隆(){
试一试{
T copy=(T)super.clone();
copy.bar=新Gizmo();
返回副本;
}
捕获(CloneNotSupportedException e){
//永远不会发生
返回(T)这个;
}
}

当我们谈到这个问题时,除了在我知道它总是会成功时抑制它之外,还有没有更好的方法来消除未经检查的强制转换异常?

“因此,编译器正确地说访问可以是私有的。”-你确定你指的是编译器吗?不是你的IDE,即IntelliJ?作为旁白:你真的不应该使用
Cloneable
。你是对的,它是IDE。你可能想回答你的问题并相应地更改标记。至于使用Cloneable,当我试图复制某个未知的派生类,然后修改va时,如何避免它其中一个内部属性的lue?我不能说“new t()”更改了标记。更好吗?