假设我的班级我有一个名为
的字段名称private long _quantity;
我为它创建了一个getter和一个setter(例如getQty
和setQty
)。
当我使用field.set(...)
迫使它通过其setter时,是否有一种Java反射方式?
我刚读了一个标签@Access ...有没有人有使用@Access的经验?它可以用于强制字段访问方法吗?
答案 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的方面。但即使这样也不适用于反思。