克隆的对象并不相等

0 java clone

尝试实现深度复制,但是当我在 main 中使用 equal() 测试我的方法时,尽管所有数据都是相同的,但结果却是错误的。

这是我的克隆方法:

  @Override
    public Object clone() { try {
            // shallow copy
            BankAccount clone = (BankAccount)super.clone();
            // deep copy
            clone.createDate = (java.util.Date)(createDate.clone());

            return clone;
        }
        catch (CloneNotSupportedException y) {
           return null; }
Run Code Online (Sandbox Code Playgroud)

这是我的主要测试:

public static void main(String[] args) {
        BankAccount account1 = new BankAccount(1111, 5347);
        BankAccount account2 = (BankAccount)account1.clone();

        System.out.println(account2.equals(account1));
Run Code Online (Sandbox Code Playgroud)

Cha*_*les 5

您需要重写对象的 equals 方法。默认情况下,任何对象的 equals 方法都会比较两个对象的地址。