无法访问子 class 中受保护的方法

Can not access protected method in the sub class

为什么我不能在 public class Object 中使用 clone() 方法? clone() 方法是 protected 对象 class 并且所有 classed 都是对象 class 的子 class。 protected 方法可以从子 classes 和同一包中的 classed 访问。那么为什么我会出现这样的错误呢?

public class Test
{
    public static void main(String[] args)
    {
        Test2 c1 = new Test2();
        Test2 c2 = (Test2) c1.clone(); // error: clone() has protected access in java.lang.Object
    }
}

class Test2 implements Cloneable
{

}

clone()java.lang.Object里,你的Testclass不在java.lang包里。换句话说,protected 并不完全代表您认为的意思。

修复很简单。将此添加到您的 Test2:

class Test2 implements Cloneable {
    @Override public Test2 clone() {
        return (Test2) super.clone();
    }
}