簡體   English   中英

顯示一個類的兩個對象的不同值

[英]Show different values two objects of one class

我在Java測試中使用斷言實際值和期望值。 當然,如果兩個對象不同,則拋出斷言異常。 但是我想知道,有什么不同。

如果有人知道Java庫,請回答我。

簡單:我想打印以控制所有不同的字段:公共,受保護,私有(原始類型)。 對象的類可以有許多繼承的類。 我只想記錄簡單的字段:字符串,數字,布爾值,字符,array [] /集合的項目。

如果field是另一個類,請不要將其值記錄(toString函數)。 我只想為該子類顯示不同的簡單字段。

對於集合,僅顯示不同的值。

例如:

class A {
private String a;
protected int b;
}


class A1 { 
private int c;
private String d;
}

class B extends A {
private byte[] array;
private List<A> collection
private A1 a1;
}

因此,我們將其與對象類B進行比較。如果a / b字段不同,則顯示:

field: a. values: Tom / Jerry.

如果不等於a1,那么我想知道哪個字段:

field: a1.c. value: 10 / 12.

對於數組和集合也是如此。

我可以解析所有繼承類的所有字段。 我得到每個字段,得到字段類型。 如果簡單(字符串,數字,布爾值...),則記錄不同的值。

如果它是具有自己字段的另一個子類,則可以遞歸地重復以提取所有字段。 但我有一個問題:如何從字段值中提取數據(如果它是數組或集合)? 我從Field :: get()對象得到。

我如何理解對象-> Type []或Collection {Type}並從中獲取該類是Type? 如果我能做到,那就簡單。 我按大小比較數組/集合。 如果大小相等,則開始等於每個項目。

要知道,如果你字段的類型是一個數組,使用isArray()從法Class

在Collection {Type}中,字段的類型為“ Collection”,“ Type”是通用的。 您可以通過使用((ParameterizedTypeImpl) myField.getGenericType()).getActualTypeArguments()檢索泛型來進行常規檢查,但這不是必需的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM