2016-04-05 4 views
0

問題があります。 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 

Iは、図クラスにCloneableインタフェースを実装し、そしてreturn super.clone()署名付きオーバーライドクローン()メソッド。

私は間違っていますか?

+7

'clone'メソッドと' equals'メソッドを完全に参照する必要があります。 –

+3

私は 'equals'をオーバーライドしていないと仮定します。この場合、デフォルトの実装が使用されます。これは 'return this == other'と等価です。 –

+0

'問題は本当に漠然としている。 – tnw

答えて

0

==は、指定された参照が同じオブジェクトを指しているかどうかを比較します。あなたの例ではcTestcTest1は同じオブジェクトを指していて、cTest2はクローンオブジェクトを指しています。 equalsを上書きしなかった場合は、デフォルトで==を使用して、指定されたオブジェクトを比較することに注意してください。あなたが提供するすべての結果は非常に正常です。

関連する問題