首页 > 解决方案 > 从定义它的类中访问时如何摆脱警告“访问是私有的”?

问题描述

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

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

}

当我们讨论这个主题时,有没有更好的方法来摆脱未经检查的强制转换异常,而不是在我知道它总是会成功时抑制它?

标签: javaintellij-ideaclone

解决方案


推荐阅读