Java 使用大型POJO的反射访问私有字段:±;1.

Java 使用大型POJO的反射访问私有字段:±;1.,java,reflection,pojo,private-members,Java,Reflection,Pojo,Private Members,我刚刚发现,读取和写入任何对象的任何私有字段都可以在没有任何访问器的情况下完成,但是使用反射 因此,我的问题是:对于使用JAVA而不是第三种技术(例如EL)的应用程序,如果我需要一个包含20个字段的POJO,那么实现40个访问器还是使用反射来访问它们更有趣?我想有一些优点和缺点,但是任何经验或反馈都是很好的:)你可以,但是它不太容易维护,所以:不要这样做。使用getter/setter访问成员的优点是,您可以隐藏访问器、初始化lazy,并且可以轻松地进行重构(例如使用IDEA或Eclipse)。

我刚刚发现,读取和写入任何对象的任何私有字段都可以在没有任何访问器的情况下完成,但是使用反射


因此,我的问题是:对于使用JAVA而不是第三种技术(例如EL)的应用程序,如果我需要一个包含20个字段的POJO,那么实现40个访问器还是使用反射来访问它们更有趣?我想有一些优点和缺点,但是任何经验或反馈都是很好的
:)

你可以,但是它不太容易维护,所以:不要这样做。使用getter/setter访问成员的优点是,您可以隐藏访问器、初始化lazy,并且可以轻松地进行重构(例如使用IDEA或Eclipse)。

通常最好通过getter访问字段,即使您使用反射来确定哪些字段可用。您可以同样轻松地通过反射找出可用的getter并调用这些getter方法。这允许您:

1) 动态确定哪些数据可用

2) 明确说明哪些字段应可用,哪些字段应专用

3) 显式重写getter的行为以满足您的需要


在大多数正常情况下,反射用于确定对象上可用的数据。您不应该使用反射来代替getter和setter。否则,您的代码将变得真正不可维护。

反射只适用于需要在对象上施展魔法而无法对其结构进行大量假设的特定用例。具体地说,如果JVM使用
安全管理器
它很可能会阻止代码通过反射设置隐私


有关安全管理器的更多信息,请参阅此页。

您可以使用反射访问对象字段和方法,但不应该这样做

这篇文章列出了至少两个不可测量的原因:

  • 表演。使用反射访问对象方法/字段比通过访问器访问要慢

  • 安全限制

  • 最大的缺点是不可维护性,引述以下文章:

许多应用程序的一个更严重的缺点是使用反射 可以隐藏代码中实际发生的事情。程序员 希望在源代码中看到程序的逻辑,以及 绕过源代码的反射等技术可以创建 维护问题


更不用说你在去私家车的路上有可能被安全管理政策击中。。。