假设我们有一个类结构
:
class Street {
String name;
List<Building> buildings;
}
class Building {
String number;
int floors;
List<Apartment> apartments;
}
class Apartment {
String owner;
}
我对运行时
中的上述结构一无所知。我所拥有的只是一个对象
和一个String
参数,其中包含有关我必须分配的属性的数据。
例如,字符串 "buildings.0/floors#5"
表示我必须将列表中第一栋建筑物的楼层属性分配为 5。而字符串 "buildings.0/Apartments.1/owner#Luke"
表示我必须将第一栋楼的公寓列表中第二套公寓的所有者属性(property)分配给“Luke”。
我知道如何使用反射分配属性。但是,如果我们必须分配属于类本身的属性的属性怎么办?这样的逻辑可以实现吗?
最佳答案
如果您的类遵循 JavaBeans 约定(标准 getter 和 setter 封装字段),则可以使用 Introspector
,以及依赖它的几个框架。
我最喜欢的例子是 Spring's BeanWrapper technology ,它允许您编写如下代码:
BeanWrapper bw = new BeanWrapperImpl(street);
bw.setPropertyValue("buildings[0].appartments[1].owner", "luke");
关于java - 使用反射设置属性的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41183401/