package org.springblade.common.utils;
import java.lang.reflect.Field;
class Student {
private String name;
private int age;
private String major;
public Student(String name, int age, String major) {
this.name = name;
this.age = age;
this.major = major;
}
public static boolean isFieldValuesChanged(Object obj1, Object obj2) {
if (obj1 == null || obj2 == null || obj1.getClass() != obj2.getClass()) {
return true;
}
Class<?> clazz = obj1.getClass();
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
try {
Object value1 = field.get(obj1);
Object value2 = field.get(obj2);
if (value1 == null) {
if (value2 != null) {
return true;
}
} else if (!value1.equals(value2)) {
return true;
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return false;
}
}
public class ReflectionComparisonExample {
public static void main(String[] args) {
Student student1 = new Student("Alice", 20, "Computer Science");
Student student2 = new Student("Alice", 20, "Computer Science");
Student student3 = new Student("Alice", 20, "Mathematics");
System.out.println(Student.isFieldValuesChanged(student1, student2));
System.out.println(Student.isFieldValuesChanged(student1, student3));
}
}