[英]How to map multiple objects having two identical values and one different value to one object with list of those different values?
[英]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.