我有问题。我的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()方法。
我做错了什么?
答案 0 :(得分:0)
==
比较给定引用是否指向同一对象。在示例中cTest
和cTest1
指向同一个对象,cTest2
指向克隆的对象。请记住,如果您没有覆盖equals
,则默认使用==
来比较给定的对象。因此,您提供的所有结果都是非常正常的。