将case语句更改为以下代码后,为什么以下代码无法编译
case ENUM1: doSomeStuff();
作品?
public enum EnumType
{
ENUM1, ENUM2, ENUM3;
void doSomeStuff()
{
switch(this)
{
case EnumType.ENUM1: doSomeStuff();
}
}
}
这是为了避免针对不同枚举类型进行比较的能力。 将它限制为
一种 类型(即
switch
语句中的枚举值的类型)是有意义的。
更新 :实际上是为了保持二进制兼容性。以下是JLS
第13.4.9章中途引用的内容:
要求内联常量的一个原因是,
switch
语句中的每个都需要常量case
,并且两个这样的常量值不能相同。编译器switch
在编译时检查语句中是否有重复的常量值。该class
文件格式没有做的情况下价值观的象征性的联系。
换句话说,由于中的类标识符EnumType.ENUM1
,它不能被表示为编译时常量表达式,而该switch
语句是必需的。
我收到的错误: 这是我的代码 我尝试了几种不同的方法来读取此文件,但我无法弄清楚为什么会发生这种情况。我使用的扩展名.rtf,.txt,认为这可能是文件本身的问题。该文件仅包含以下内容:
问题内容: 我正在尝试在片段中使用RecyclerView。对于第一个选项卡,它显示得很好,但是当我滑动到第二个选项卡然后又回到第一个选项卡时,出现以下错误: java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“ void android.support.v7.widget.RecyclerView $ LayoutManager.stopSmoothSc
嗨, 我正在一个项目工作,我需要从Instagram实时更新的某些标签。 这是我创建订阅的代码 输出为: 这是callback.php的代码: activity.log中的一行是: [{“changed_aspect”:“media”,“object”:“tag”,“object_id”:“winter”,“time”:1385411793,“subscription_id”:3932963,“d
如问题所示,值可变的lambda捕获不适用于常量 但是为什么对不可变的lambda也这样做呢?在不可变lambda中,声明为,因此它无论如何都不能修改捕获的值。 当我们移动lambda时,这种情况的坏后果就会发生,例如,当我们将lambda包装在一个中时。 请参见以下两个示例: 我们得到以下编译器生成的lambda类: 程序打印以下内容(使用gcc或clang): 在第一个示例中,至少复制了三次值
我编写了这段代码,将整个以10为基数的数字转换成二进制。我相信代码就是它所需要的一切,但我无法让工作。 我在这个网站和其他网站上花了几个小时,尝试了无数次的修改,但都没有用。 我已经让代码无错误地编译,但一旦我运行它并输入程序就会崩溃。 下面是代码: 这些是java在我输入数字时抛出的异常。 我希望这是足够的信息。
问题内容: 当我编译这段代码时,编译器告诉我我 不能使用str(s)的地址 。 所以我的问题是 类型转换 是否会寻找新地址来定位当前的new ,还是我没有想到的其他东西? 问题答案: Go编程语言规范 表达方式 表达式通过将运算符和函数应用于操作数来指定值的计算。 转换次数 转换是形式为T(x)的表达式,其中T是类型,x是可以转换为类型T的表达式。 地址运算符 对于类型T的操作数x,地址操作&x生