Java中如果clone为什么必须实现Cloneable接口
Obje类中有clone方法
对应的描述
个人理解:如果Object的子类没有实现Cloneable接口,但是子类重写(override)了clone方法,子类就会抛出异常。
对应的中文api文档
也就是说,每个类都是Object的子类,Object类中有个clone()方法(人家定义如果你要重写clone方法,但是你没有实现cloneable接口,就是没写class A implements cloneable)那就会抛出个异常。如果你写了,就不会抛出异常。
就像是a/0;会抛出异常,现在定义你重写clone方法但是你没写class A implements cloneable,它会抛出异常。写了就不会
例如:写了implements Cloneable,不抛出异常
没写,就会抛出异常,通过catch来捕捉。如果没捕捉,就会报错
没写implements Cloneable,但是重写了clone方法,抛出异常,没捕捉,程序就会报错
再次加上,就不报错:
最后:重写clone方法要写上implements Cloneable,就不会报错,没写就会报错,至于至于这个Cloneable接口,其实里面什么有也没有,这也就是为啥好多地方说这是个标志接口,没作用。但是你没写implements Cloneable,重写clone就会报错
空荡荡的接口,里面啥也没有,所以说起标记作用。