使用java Reflection获取对象的特定属性

时间:2010-10-10 07:50:03

标签: java reflection properties

我有类User,它有不同的对象,如国家,地址,汽车等等。 所有嵌入对象都具有很长的userid属性。我有User对象,我想使用java反射将所有嵌入对象的userid属性设置为特定值或null。 否则我必须为每个不同的对象编写方法。

3 个答案:

答案 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
    }
}
相关问题