我有类User,它有不同的对象,如国家,地址,汽车等等。 所有嵌入对象都具有很长的userid属性。我有User对象,我想使用java反射将所有嵌入对象的userid属性设置为特定值或null。 否则我必须为每个不同的对象编写方法。
答案 0 :(得分:5)
您可以使用Apache Common's ReflectionUtils和BeanUtils类来帮助您。 ReflectionUtils有几个辅助方法可以帮助发现你感兴趣的属性,而BeanUtils有辅助方法来填充属性/字段的值。
答案 1 :(得分:1)
除非有特殊原因要使用反射,否则最好不要使用它。
如果您正在寻找使用反射,因为它会更方便,或者需要更少的代码行/使代码可读,那么请注意这不是真的。
通常反射代码的可读性较差,使用普通方法调用方法几乎总是更好。
例如,当您的方法名称仅在运行时(通过属性文件或其他内容)知道时,反射是合适的
如果出于任何原因,需要反思,请参阅this。
答案 2 :(得分:0)
如果我以正确的方式理解任务,你可以不加思考地完成任务。
abstract class Embedded {
private static final Set<Integer> obj = ...;
{
//init obj
}
protected Embedded(int id){
set.add(id);
}
public static Set<Integer> getAllIDs(){
return obj; //return copy or immutable collection
}
}