显示一个类的两个对象的不同值



我在java测试中使用断言实际值和期望值。通常,如果两个对象不同,则抛出断言异常。但我想知道,有什么不同。

如果有人知道java库,请回答我。

简单:我希望print控制台所有不同的字段:public、protected、private(原始类型)。对象的类可以有许多继承的类。我想要只记录简单字段:字符串、数字、布尔值、字符、数组[]/collections的项。

若字段是另一个类,则不要记录它的值(toString函数)。我只想为这个子类显示不同的简单字段。

For Collections仅显示不同的值。

例如:

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?如果我能做到,那就简单。我按大小比较数组/集合。如果大小相等,则起点等于每个项目。

要知道字段的类型是否为数组,请使用Class中的isArray()方法。

在Collection{Type}中,字段的类型为"Collection","Type"是泛型。如果需要,可以通过((ParameterizedTypeImpl) myField.getGenericType()).getActualTypeArguments()检索泛型来进行额外的检查,但这可能不是必要的。

相关内容

  • 没有找到相关文章

最新更新