使用java反射通过其setter方法设置字段

时间:2012-03-11 11:17:08

标签: java reflection

假设我的班级我有一个名为

的字段名称
private long _quantity;

我为它创建了一个getter和一个setter(例如getQtysetQty)。

当我使用field.set(...)迫使它通过其setter时,是否有一种Java反射方式?

我刚读了一个标签@Access ...有没有人有使用@Access的经验?它可以用于强制字段访问方法吗?

4 个答案:

答案 0 :(得分:5)

不,如果您想调用您的setter,您需要调用该方法,而不是直接设置该字段。

如果您对该字段本身有处理,set将不会通过您的方法。

答案 1 :(得分:2)

没有。反思的重点在于你基本上是拆除安全带。

答案 2 :(得分:0)

假设您的字段名称对应于getter / setter方法,也许您可​​以使用getDeclaredMethods,找出正确的方法并使用它? 见http://java.sun.com/developer/technicalArticles/ALT/Reflection/

答案 3 :(得分:0)

不,你不能用反射做到这一点。我所知道的Java VM上唯一的技术类似于AspectJ,它允许您注册intercept field access的方面。但即使这样也不适用于反思。