克隆整数

rub*_*buc 8 java cloneable

我试图克隆类Integer的对象,它实现了可克隆的接口.

Integer a = new Integer(4);  
Integer b = a.clone();
Run Code Online (Sandbox Code Playgroud)

我知道有这方面的工作,但我必须像这样实现它.为什么我收到此错误= clone()已保护访问权限java.lang.Object

为什么会这样说?clone方法不是clonable接口的公共抽象方法,它与object有什么关系.提前致谢 :-)

rli*_*bby 15

java.lang.Integers是不可改变的.没有理由克隆一个.如果你浪费内存,试试吧Integer.valueOf(myInteger.intValue()).

  • +1:这不会始终创建副本,因为缓存了从-128到127的小值.你需要明确地使用`new Integer(myInteger)` (6认同)

aio*_*obe 9

当然,所有方法Object都是继承的.clone但是protected,该方法只能从子类中访问.

protected修饰符指定只能在其自己的包中访问该成员(与package-private一样),此外,还可以在另一个包中通过其类的子类访问该成员.

您可以clone()在大多数其他情况下调用的原因是子类通过使用public访问修饰符覆盖它来"打开它" .