Java中的克隆限制

时间:2014-12-17 22:34:20

标签: java restriction cloneable

我的项目中没有上课:

  • 经理,员工等。

我如何限制课程克隆?

例如:

public class Personne throws CloneNotSupportedException {
...
} 

4 个答案:

答案 0 :(得分:3)

clone()是一种protected方法;作为使类可复制的一部分,您通常会覆盖它以使其成为public,并提供实现。您可以在类和任何子类中阻止这两者:

@Override
protected final Object clone() throws CloneNotSupportedException {
    throw new CloneNotSupportedException();
}

final关键字意味着没有子类能够用“真实”实现替换此方法。

答案 1 :(得分:2)

根据Java Docs

,您无需执行任何操作
Invoking Object's clone method on an instance that does not implement the Cloneable interface
results in the exception CloneNotSupportedException being thrown

答案 2 :(得分:0)

Javadoc说:

  

在未实现Object接口的实例上调用Cloneable的clone方法会导致抛出异常CloneNotSupportedException

因此,如果您未实施Cloneableclone将自动抛出异常。

但即使你没有实现Cloneable,子类也可以实现Cloneable,这将使克隆工作。为防止这种情况发生,您可以定义此clone方法:

@Override
protected final Object clone() throws CloneNotSupportedException {
    throw new CloneNotSupportedException();
}

final关键字表示子类不能覆盖它。

答案 3 :(得分:-1)

好的,为了防止克隆对象,你必须创建一个

  public Manager cloneManager() throws CloneNotSupportedException
    {
           throw new CloneNotSupportedException(); 
    }

最终会抛出一个异常的uppon clone。(经理)。