Java 写工具类,找出两个对象的不同属性
时间: 2024-01-08 18:04:07 浏览: 32
可以使用 Java 反射机制来实现一个工具类,用于比较两个对象的不同属性。以下是一个示例代码:
```java
import java.lang.reflect.Field;
public class ObjectComparator {
public static void compareObjects(Object obj1, Object obj2) {
Class<?> clazz = obj1.getClass();
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
try {
field.setAccessible(true);
Object value1 = field.get(obj1);
Object value2 = field.get(obj2);
if (!value1.equals(value2)) {
System.out.println(field.getName() + " is different: " + value1 + " vs " + value2);
}
} catch (IllegalAccessException e) {
System.err.println("Error comparing objects: " + e.getMessage());
}
}
}
}
```
这个工具类的 compareObjects 方法接受两个参数,即要比较的两个对象 obj1 和 obj2。它首先获取 obj1 的 Class 对象,然后通过反射机制获取该类的所有属性。接着,它遍历所有属性,利用 field.get 方法获取 obj1 和 obj2 对应属性的值,然后比较这两个值是否相等。如果不相等,则输出属性名和这两个值。
使用这个工具类很简单,只需要调用 compareObjects 方法并传入要比较的两个对象即可。例如:
```java
Person p1 = new Person("John", 25);
Person p2 = new Person("Jane", 30);
ObjectComparator.compareObjects(p1, p2);
```
这段代码会比较 p1 和 p2 的所有属性,并输出不同的属性。假设 Person 类有 name 和 age 两个属性,上面的代码会输出:
```
Name is different: John vs Jane
Age is different: 25 vs 30
```