如何从反射访问中过滤特定字段?

Posted

技术标签:

【中文标题】如何从反射访问中过滤特定字段?【英文标题】:How a particular field is filtered from reflection access? 【发布时间】:2017-04-18 18:43:47 【问题描述】:

Java如何限制对Class.javaprivate final ClassLoader classLoader字段的反射访问? (如屏幕截图中的文档所示)

我找到了link,它描述了 SecurityManager 可用于限制反射访问,但我该如何使用它。请详细说明。

然后我想限制对特定字段的访问。

找到similar question 但想知道如何在我的课堂上实现这一点,并且正如问题中已经问过的那样,为什么在 jdk 中实现这一点?我也可以使用反射来打破这个链条吗?

【问题讨论】:

Here 是您问题的答案。 为什么要使用这个私有字段?我敢肯定,您的问题可以得到解决,但不能通过访问受 JVM 保护的字段来解决。 @Pavlo:似乎某些字段无法访问,因为它们甚至无法找到。 【参考方案1】:

它由 JVM 通过您无法使用的特殊机制进行保护。即使您拥有所有权限,也无法通过反射访问它,尽管通常可以访问私有字段。

对于我们这些凡人来说,我们能做的最好的事情就是使用 SecurityManager 来防止反射访问,更重要的是设计我们的软件,使其不依赖 Java 来保密。

回答您的编辑,因为我显然不清楚(?)

“我怎样才能在我的课堂上实现它?” 你不能。

“为什么在jdk中实现?” 所以你不能使用反射来绕过它。

“我也可以使用反射来打破这个链条吗?” 不,这就是重点。

【讨论】:

以上是关于如何从反射访问中过滤特定字段?的主要内容,如果未能解决你的问题,请参考以下文章

Java 反射 - 访问受保护的字段

反射中getFields()与getDeclaredFields()区别

Java反射机制-Declared区别

使用反射检索数组中的特定元素

Java中是不是可以通过反射访问私有字段[重复]

C#反射机制详解