同一个对象不同实例在不知道属性名的情况下获得非空的属性且属性值不同的属性名和值 请举例
时间: 2023-05-19 21:03:26 浏览: 68
C#编程获取实体类属性名和值的方法示例
可以使用反射机制来实现这个功能,以下是一个 Java 的示例代码:
```java
import java.lang.reflect.Field;
public class ReflectionExample {
public static void main(String[] args) throws Exception {
// 创建两个对象
MyClass obj1 = new MyClass(10, "hello");
MyClass obj2 = new MyClass(20, "world");
// 获取对象的 Class 对象
Class<?> clazz = MyClass.class;
// 遍历类的所有字段
for (Field field : clazz.getDeclaredFields()) {
// 设置字段可访问
field.setAccessible(true);
// 获取字段的值
Object value1 = field.get(obj1);
Object value2 = field.get(obj2);
// 如果值不为空且不相等,则输出属性名和属性值
if (value1 != null && value2 != null && !value1.equals(value2)) {
System.out.println(field.getName() + ": " + value1 + ", " + value2);
}
}
}
}
class MyClass {
private int num;
private String str;
public MyClass(int num, String str) {
this.num = num;
this.str = str;
}
}
```
输出结果为:
```
num: 10, 20
str: hello, world
```
这个示例中,我们创建了两个 MyClass 的对象 obj1 和 obj2,它们的属性值不同。然后使用反射机制遍历 MyClass 类的所有字段,获取它们的值并比较。如果值不为空且不相等,则输出属性名和属性值。
阅读全文