clone()方法不应该像它应该的那样工作

时间:2016-04-05 17:52:54

标签: java

我有问题。我的Cloneable Interface中的clone()方法应该像它应该的那样工作。

我有这样的事情:

        Figure cTest = new Square("Square", 0, 0, new Color(100, 20, 40), new Color(100, 20, 40), 4);
        Figure cTest1 = cTest;
        Figure cTest2 = (Figure)cTest.clone();

        System.out.println(cTest == cTest1); //result true 
        System.out.println(cTest == cTest2); //result false
        System.out.println(cTest.equals(cTest2)); // result false, but it should be true 

我在Figure类中实现了Cloneable接口,并用return super.clone()签名覆盖了clone()方法。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

==比较给定引用是否指向同一对象。在示例中cTestcTest1指向同一个对象,cTest2指向克隆的对象。请记住,如果您没有覆盖equals,则默认使用==来比较给定的对象。因此,您提供的所有结果都是非常正常的。