为什么没有在java.lang.Cloneable接口中指定.clone()方法?
发布于 2009-04-02 12:05:53
基本上,这是一个坏掉的界面。Ken Arnold和Bill Venners在Java Design Issues上讨论了这一问题。
阿诺德:
如果我在这一点上成为上帝,很多人可能会很高兴我不是,我会说弃用
Cloneable,有一个Copyable,因为Cloneable有问题。除了拼写错误之外,Cloneable不包含clone方法。这意味着您不能测试某个对象是否是Cloneable的实例,将其强制转换为Cloneable,然后调用clone。你必须再次使用反射,这很糟糕。这只是一个问题,但我肯定会解决的。
发布于 2009-04-02 11:56:55
在Java bugs数据库中查看此错误:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4098033
本质上,这是Java早期版本中的一个设计缺陷,他们不打算在Cloneable接口中修复,因为这样做会破坏与一些现有代码的兼容性。
发布于 2009-04-02 12:03:20
在Java中,有一个标记接口的概念。Cloneable接口没有方法或字段,仅用于标识可克隆的语义。
从dev-x网站:
你经常会遇到
中没有行为的接口。换句话说,它们只是空的接口定义。这些接口称为标记接口。Java API中的一些标记接口示例包括:
java.lang.Cloneablejava.io.Serializablejava.util.EventListenerhttps://stackoverflow.com/questions/709380
复制相似问题