java中定义常量_形参可以是表达式吗

java中定义常量_形参可以是表达式吗如here所述,javac和其他Java编译器可能为条件为“ConstantExpression”的if语句提供代码消除功能.如果我的代码使用依赖于不同包中定义的其他常量表达式的常量表达式,那么这将如何影响?例如,假设我在相应的指定包中有以下类:packagefoo;publicclassFoo{publicstaticfinalbooleanCONDITION=false;…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

here所述,javac和其他Java编译器可能为条件为

“Constant Expression”的if语句提供代码消除功能.

如果我的代码使用依赖于不同包中定义的其他常量表达式的常量表达式,那么这将如何影响?

例如,假设我在相应的指定包中有以下类:

package foo;

public class Foo {

public static final boolean CONDITION = false;

}

package bar;

import foo.Foo;

public class Bar {

public void test() {

if (Foo.CONDITION) {

System.out.println(“This line of code could be eliminated.”);

} else {

System.out.println(“This line of code will be executed.”);

}

}

}

显然,如果foo-package在运行时从外部jar文件加载,则编译器在技术上不能假设Foo.CONDITION将为false,并且不应该消除if-statement的真实分支.

而如果Foo和Bar实际上在同一个软件包中,则真正的分支应该绝对被消除(如果编译器完全支持代码消除).

不太确定如何最好地说出这个问题,但是:Foo如何“接近”需要在Bar中持续表达,以便在Bar中被认为是不变的?他们需要在同一个文件中吗?同样的包装?同一个jar文件?或者根本不重要(即编译器总是将Foo.CONDITION视为常量,并在编译时使用构建路径中找到的值)?

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/187902.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号