java常量表示_形参可以是常量吗

java常量表示_形参可以是常量吗万千封印我知道编译器需要在编译时知道表达式才能编译一个开关,但是为什么foo.ba_常数不是呢?虽然从字段初始化后执行的任何代码的角度来看,它们都是常量,但它们不是编译时间常数在JLS所要求的意义上;见§15.28常量表达式的规格常数表达式1..这指的是§4.12.4最后变量它将“常量变量”定义为:我们称一个变量为原始类型或类型字符串,它是最终变量,并使用编译时常量表达式(§15.28)初始化为常…

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

Jetbrains全系列IDE稳定放心使用

4d6cc336c9e9561e61e54a5d96a27976.png

万千封印

我知道编译器需要在编译时知道表达式才能编译一个开关,但是为什么foo.ba_常数不是呢?虽然从字段初始化后执行的任何代码的角度来看,它们都是常量,但它们不是编译时间常数在JLS所要求的意义上;见§15.28常量表达式的规格常数表达式1..这指的是§4.12.4最后变量它将“常量变量”定义为:我们称一个变量为原始类型或类型字符串,它是最终变量,并使用编译时常量表达式(§15.28)初始化为常量变量。变量是否为常量变量可能涉及类初始化(§12.4.1)、二进制兼容性(§13.1,§13.4.9)和确定赋值(§16)。在您的示例中,foo.ba*变量没有初始化器,因此不限定为“常量变量”。修复很简单;将foo.ba*变量声明更改为具有编译时常量表达式的初始化器。在其他示例中(初始化器已经是编译时常量表达式),将变量声明为final可能是我们需要的。可以将代码更改为使用enum而不是int常量,但这又带来了几个不同的限制:你,你们必包括default即使你有case的每一个已知值enum;见为什么打开枚举的开关是必需的?这个case标签必须是显式的enum值,而不是计算为enum价值。1-常量表达限制可概括如下。常量表达式a)可以使用原语类型和String只有,b)允许文字的初等(除了null)和常量变量,c)允许常量表达式(可能括号为子表达式),d)允许运算符(赋值运算符除外),++, –或instanceof,和e)允许将类型转换为原始类型或String只有。注意,这不包括任何形式的方法或lambda调用,new, .class. .length或数组订阅。此外,数组值的任何使用,enum值、原始包装类型的值、装箱和取消装箱都被排除在外。

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/187935.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

发表回复

您的电子邮箱地址不会被公开。

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