加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

为什么Java编译器默认不缩短名称? (性能和混淆)

发布时间:2020-12-15 05:20:55 所属栏目:Java 来源:网络整理
导读:我无法理解为什么 Java编译器不会通过用一些唯一的ID替换它们来缩短变量,参数和方法名称的名称. 例如,给定课程 public class VeryVeryVeryVeryVeryLongClass { private int veryVeryVeryVeryVeryLongInt = 3; public void veryVeryVeryVeryVeryLongMethod(in
我无法理解为什么 Java编译器不会通过用一些唯一的ID替换它们来缩短变量,参数和方法名称的名称.

例如,给定课程

public class VeryVeryVeryVeryVeryLongClass {

    private int veryVeryVeryVeryVeryLongInt = 3;

    public void veryVeryVeryVeryVeryLongMethod(int veryVeryVeryVeryVeryLongParamName) {
        this.veryVeryVeryVeryVeryLongInt = veryVeryVeryVeryVeryLongParamName;
    }
}

编译后的文件包含所有这些非常长的名称:

简单的唯一ID不会加快解析速度,还会提供第一个混淆吗?

解决方法

您假设总是需要混淆,但它不是:

>反思会破坏,JavaBeans和许多框架依赖它
>堆栈跟踪将变得完全不可读
>如果您尝试针对已编译的JAR进行编码,则最终会得到类似String name = p.a1()的代码而不是String name = p.getName()

当您交付完成的应用程序时,混淆通常是最后一步,即使这样,除非目标平台存在严重的内存限制,否则它不会经常使用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读