我在我的java测试中使用断言实际值和期望值。 Ofcouse,如果两个对象不同,则抛出断言异常。但我想知道,有什么不同。
如果有人知道java库,请回答我。
简单:我希望print能够控制所有不同的字段:public,protected,private(primitive)。 Object的类可以有很多继承的类。我想只记录简单的字段:String,Number,Boolean,Char,array [] / collections。
的项目如果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.
类似于数组和集合。
我可以解析所有继承类的所有字段。我得到每个字段,得到字段类型。如果简单(String,Number,Boolean ...)则记录不同的值。
如果它是具有自己字段的另一个子类,我可以递归重复以提取所有字段。 但我有问题:我如何从字段值中提取,如果是数组或集合? 我来自Field :: get()对象。
我如何理解并从对象中获取 - &gt;输入[]或Collection {Type},该类是Type? 如果我能,那么简单。我按大小比较数组/集合。如果大小等于,则start等于每个项目。
答案 0 :(得分:0)
要知道字段的类型是否为数组,请使用isArray()
中的Class
方法。
从Collection {Type},字段的类型是'Collection','Type'是通用的。您可以通过使用((ParameterizedTypeImpl) myField.getGenericType()).getActualTypeArguments()
检索泛型来进行额外检查,但这可能不是必需的。