0

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

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

很简单:我希望打印来控制所有不同的字段:公共、受保护、私有(原始类型)。对象的类可以有很多继承类。我只想记录简单的字段:字符串、数字、布尔值、字符、数组 [] / 集合的项目。

如果字段是另一个类,则不要记录它的值(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() 对象获得。

我是如何理解并从 object -> Type[] 或 Collection{Type} 得到的,而那个类是 Type?如果我能做到,那就简单了。我按大小比较数组/集合。如果 size 等于,则 start 等于每个项目。

4

1 回答 1

0

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

从 Collection{Type} 中,字段的类型是“Collection”,“Type”是泛型。您可以通过检索来对泛型进行额外检查,((ParameterizedTypeImpl) myField.getGenericType()).getActualTypeArguments()但这可能不是必需的。

于 2013-07-03T20:28:03.687 回答