java - java封装的要点

标签 java encapsulation uglifier

我试图弄清楚为什么人们说这是防止访问您不想要的类文件的好方法,但我不能只使用反射来访问该类吗?由于没有人知道你的代码做了什么,即使他们使用反射,通过混淆来防止未经授权的访问不是更好吗?

最佳答案

封装的目的是防止访问您的实现内部类,是为了代码更简洁,而不是从技术上阻止您的类的用户使用反射访问实例,或反编译它。

例如,如果您有一个 HTTP 客户端,则应该封装您使用的流和缓冲区,并且仅将请求和响应公开给类的实际用户。这样做的目的是为了让你和他们的代码更干净,而不是让他们永远无法反射(reflect)你的类。此外,由于 API 用户唯一访问的是外部 API,因此您可以根据需要随意更改类或代码的内部结构。

关于java - java封装的要点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28776186/

相关文章:

java - 私有(private)变量比公共(public)变量安全的真正程度是多少?

javascript - JS 压缩问题 - 使用 uglifier 时回调被调用两次

java - OrientDB从顶点获取标签并从顶点获取关系

java - Cucumber JVM 中的动态特征文件分配

c++ - 如何调整集合迭代器使其表现得像 map 迭代器?

language-agnostic - SRP 不违反封装

ruby-on-rails - ES6 语法,和声模式必须用 Uglifier.new( :harmony => true

ruby-on-rails - Ruby 2.4 升级后 - 尝试加载 gem 'uglifier' 时出错(Bundler::GemRequireError)

java - java中如何去掉单引号和双引号

java - 为什么我不能访问我的静态列表中的数据?