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

时间:2013-06-29 19:22:28

标签: java reflection field

我在我的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等于每个项目。

1 个答案:

答案 0 :(得分:0)

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

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