首页 > 解决方案 > 使用 toString() 访问隐藏字段是否有问题

问题描述

我正在尝试创建一个与 SettingsApp 相同的应用程序。为此,我需要与 Wi-Fi 设置相同的网络,例如无法访问互联网或密码错误。这些信息隐藏在 WiFiConfiguration 中。

但是我发现这些信息是可以使用toString()方法读取的。

访问那些使用toString()?

标签: javaandroidwifi

解决方案


一般来说,这不是一个好的设计决策。解析toString()以提取其他方法未公开的信息是违反封装原则的。在实践中,这可能会变得脆弱,因为后续的软件版本经常会改变toString()格式。

这么说,可能有时候根本没有别的办法。例如,如果您必须使用无法以任何方式修改并且仍然必须使其工作的第 3 方代码。在这种情况下,您可能希望在设计中引入反腐败层。您可能还想尝试使用反射


推荐阅读