Java编译器不会优化静态最终字符串.为什么?

Java编译器不会优化静态最终字符串.为什么?,第1张

概述我的应用程序中有以下代码:publicstaticfinalbooleanDEBUG=true;publicstaticfinalbooleanREL=!DEBUG;privatestaticfinalStringDEBUG_OR_RELEASE=(REL)?"RELEASE_VER":"DEBUG_VER";我认为Java编译器将从生成的.apk文件中完全消除“DEBUG_VER”

我的应用程序中有以下代码:

  public static final boolean DEBUG = true;  public static final boolean REL = !DEBUG;  private static final String DEBUG_OR_RELEASE = (REL) ? "RELEASE_VER" : "DEBUG_VER";

我认为Java编译器将从生成的.apk文件中完全消除“DEBUG_VER”字符串(当通过Proguard导出时)但是当我检查.apk文件时,我看到那里的“DEBUG_VER”字符串.

为什么?我错过了什么?我做错了什么?

解决方法:

根据你发布的内容,DEBUG是真的,所以REL是假的,所以(REL)? “RELEASE_VER”:“DEBUG_VER”应该产生“DEBUG_VER”.

这正是你所观察到的,所以如果你期望看到“RELEASE_VER”,你应该设置:

public static final boolean DEBUG = false;

试试看看会发生什么.

总结

以上是内存溢出为你收集整理的Java编译器不会优化静态最终字符串.为什么?全部内容,希望文章能够帮你解决Java编译器不会优化静态最终字符串.为什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1105698.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存