gpt4 book ai didi

java - 我们可以保护封装原则不被反射破坏吗?

转载 作者:行者123 更新时间:2023-12-01 14:16:44 26 4
gpt4 key购买 nike

反射打破了封装原则。我们可以保护封装原则不被反射破坏吗?是否有任何 API 可以让我们保护封装免受反射影响?

最佳答案

从技术上来说,是的。快速搜索 SO 给出了防止反射的示例:https://stackoverflow.com/a/770672/2372767 。不过话说回来,

Reflection breaks the Encapsulation principle...

暗示对原理的误解。封装的目的不是保护您的代码免受其他恶意代码的侵害,也不是保护您的实现,甚至创建某种程度的安全性。

当您使用公共(public)和私有(private)方法创建一个接口(interface)(类、模块、对象等)时,您实际上创建了两个接口(interface):一个易于使用,另一个则不然。本质上,当你将某些东西设为私有(private)时,你真正想说的是“这是完成某件事的困惑、复杂细节的一部分,直接调用它可能很危险。”

我想强调的一点是:您的私有(private)接口(interface)仍然是一个接口(interface),应该像对待公共(public)方法一样小心对待。虽然您永远不应该鼓励其他程序员使用私有(private)成员,但您不知道其他人何时需要使用这些困惑、复杂的步骤之一。

正如其他用户所提到的,还有其他方法可以获取私有(private)类成员。 Reflection 是一个易于使用的 API,可以完成相同的任务。

关于java - 我们可以保护封装原则不被反射破坏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18062814/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com