Bạn có thể sử dụng Class#getDeclaredFields()
để nhận tất cả các trường được khai báo của lớp học. Bạn có thể sử dụng Field#get()
để nhận giá trị.
Nói tóm lại:
Object someObject = getItSomehow();
for (Field field : someObject.getClass().getDeclaredFields()) {
field.setAccessible(true); // You might want to set modifier to public first.
Object value = field.get(someObject);
if (value != null) {
System.out.println(field.getName() + "=" + value);
}
}
Để tìm hiểu thêm về phản ánh, kiểm tra Sun tutorial on the subject.
Điều đó nói rằng, các lĩnh vực không nhất thiết tất cả đại diện cho thuộc tính của một VO. Bạn muốn xác định các phương thức công khai bắt đầu bằng get
hoặc is
và sau đó gọi phương thức đó để lấy các giá trị bất động sản thực thực.
for (Method method : someObject.getClass().getDeclaredMethods()) {
if (Modifier.isPublic(method.getModifiers())
&& method.getParameterTypes().length == 0
&& method.getReturnType() != void.class
&& (method.getName().startsWith("get") || method.getName().startsWith("is"))
) {
Object value = method.invoke(someObject);
if (value != null) {
System.out.println(method.getName() + "=" + value);
}
}
}
Đó lần lượt nói, có thể có những cách thanh lịch hơn để giải quyết vấn đề thực tế của bạn. Nếu bạn xây dựng thêm một chút về yêu cầu chức năng mà bạn cho rằng đây là giải pháp đúng, thì chúng tôi có thể đề xuất giải pháp phù hợp. Có rất nhiều, nhiều công cụ có sẵn cho các sản phẩm massage javabeans.
gì nếu tôi phải sửa đổi giá trị của trường i n đối tượng? Sửa đổi như giá trị hiện tại gte thực hiện một cái gì đó và sau đó thêm nó trở lại đối tượng? –