Я изучаю Java, и в книге, которую я читаю, есть следующий пример клонирования. В clone()
мой первый экземпляр может установить буфер для нового объекта, даже если буфер равен private
. Похоже, что для этого нужно, чтобы поле было protected
.
Почему это разрешено? Имеет ли clone()
специальные привилегии, позволяющие ему получить доступ к полям private
?
public class IntegerStack implements Cloneable {
private int[] buffer;
private int top;
// ... code omitted ...
@Override
public IntegerStack clone() {
try{
IntegerStack nObj = (IntegerStack) super.clone();
nObj.buffer = buffer.clone();
return nObj;
} catch (CloneNotSupportedException e)
{
throw new InternalError(e.toString());
}
}
}