在枚举的 Java switch 语句中,为什么当我在每种情况下限定我的值时会收到编译错误?

2024-02-11

我在 Java 中的 Enum 上有一个 switch 语句,让我们调用 IMyInterface.MyEnum

我的每个案例陈述的形式如下: IMyInterface.MyEnum.MyValue,(尽管如果导入,我可以删除 IMyInterface)。

但是,编译器(Java 6)会抛出错误: “合格的案例标签 IMyInterface.MyEnum.MyValue 必须替换为不合格的枚举常量 MyValue”。

我显然可以做到这一点,但对于我的一生,我不明白这个错误的目的是什么。显然,如果编译器可以处理实际值,它应该能够像处理常量一样处理完全限定名称。事实上,我假设编译器将常量转换为完全限定名称。

那么,Java 大师们,这背后的理由是什么? 谢谢你!


来自 JLS:

(要求内联常量的一个原因是 switch 语句在每种情况下都需要常量,并且没有两个这样的常量值可以相同。编译器在编译时检查 switch 语句中的重复常量值;类文件格式不进行大小写值的符号链接。)

你可以找到它here https://docs.oracle.com/javase/specs/jls/se6/html/binaryComp.html#45140.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在枚举的 Java switch 语句中,为什么当我在每种情况下限定我的值时会收到编译错误? 的相关文章

随机推荐

  • 如何在浏览器中使用模块,同时也引用 DevTools 中的变量和函数?

    我的 HTML 设置如下 所有 ES6 模块都工作正常 唯一的问题是我现在无法引用 DevTools 中的任何内容 例如使用控制台并输入变量以查看其值或手动使用函数 如何在能够使用 DevTools 的同时导入模块 谢谢 在 DevTool
  • Maven2:如何确定 Maven 构建正在使用特定的插件版本?

    我刚刚发现 Maven 插件管理听起来很奇怪 在进行网站生成时 我想使用特定版本的 Maven 网站插件 以便实现特定的功能 假设我想使用这个插件的 2 0 1 版本 如果我使用 POM 的报告部分来使用以下命令生成项目站点 mvn sit
  • Phonegap 软键盘覆盖输入字段[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我的 Phonegap 3 1 中的软键盘覆盖了我的 Android 4 x 中的输入字段 这个问题一直很烦人 我刚才差点就发帖问了 但突然
  • 是否可以将react-datepicker与react hooks表单一起使用?

    是否可以将react datepicker与react hooks表单一起使用 我尝试了以下示例 但没有运气 import React useState from react import styles css import useForm
  • 将字符串解析为 DirectoryInfo 的正确方法? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一个程序 为了避免复杂化 我需要将给定的字符串变量解析为 DirectoryInfo 我想知道是否可以将字符串解析为 Direc
  • 如何制作骨头形状的纽扣

    我目前正在为我的网站试验一个按钮 我希望它看起来像一个普通按钮 但是一旦你将其悬停 它就会变成一根骨头 我的网站是关于狗的 所以我使用了一个已经存在的 codepen 项目 最终得到了这个 root bg 1a1e24 color eee
  • 使用 jQuery 重复元素

    我确信这对于正确的人来说是显而易见的 但是如何使用 jQuery 重复一个元素呢 本质上 我希望 jQuery 无限次重复内联元素 就像您使用 CSS 来重复背景纹理的图形一样 我一直在研究 clone 和 each 但确实可以使用一些指针
  • AngularJS:指令隔离范围 - 范围变量未定义

    请有人能给我解释一下为什么吗attrDir的范围变量是可见的 并且oneWay不是吗 我以为scope 也是孤立的 angular module test angular module test directive attrDir attr
  • 访问项目资源中的图像?

    如何在运行时访问已添加到项目资源中的图像 我希望能够做这样的事情 if value picBox1 image Resources imageA else picBox2 image Resources imageB Something I
  • MongoDB toArray 性能

    我正在尝试从 Mongo Node 中的术语集合构建类别树 但首先我使用 in 选择所有树元素 console time termsCol find var terms await termsCol find term id in flat
  • gitlab API有速率限制吗

    github对OAuth客户端的速率限制为5000 小时 但我找不到相同的信息gitlab 除了创建新用户和重置密码6次 分钟 是否意味着没有限制 答案是不再是 不 https gitlab com gitlab org gitlab ru
  • iceConnectionState 已断开连接(通过互联网使用时)

    这个问题以前曾被问过 但我还没有找到答案 我基本上遇到了与描述相同的问题here https stackoverflow com questions 34405816 peerjs webrtc iceconnectionstate fai
  • 使用 openCV 从图像中读取数字和字母

    我正在开发一个应用程序 使用 c 中的 opencv 读取图像中的字母和数字 我首先将给定的彩色图像和颜色模板更改为二值图像 然后调用方法cvMatchTemplate 这个方法只是突出显示了模板匹配的区域 但不清楚 我只是不想看到该区域
  • 如何保留从常规终端到 gnu 屏幕的 emacs 颜色

    作为记录 我使用的是 OSX 雪豹 当我直接从终端使用 emacs 时 我有一个我非常满意的颜色集 例如 用于 c c 黑底绿 红色注释 彩色关键字 等等 其中一些是在我的 终端首选项 中设置 有些位于我的 emacs 文件中 见下文 当我
  • JFreeChart 链接轴

    我创建了一个带有两个独立 JFree 图表的框架 以 2x1 网格布局保存 顶部图表显示 Canlestick 图表 底部图表显示时间序列图 我想要做的是链接两个图表显示的 X 轴 以便当我放大一个图表时 另一个图表会缩放到相应的时间段 这
  • netbeans 中的 libtesseract303.dll 问题

    我正在实施 OCR 系统 当我将 dll 文件放在 java 类路径上时 出现以下错误 Exception in thread main java lang UnsatisfiedLinkError G software apache to
  • WPF:更改组合框的 ItemTemplate 会删除您键入时向下跳转列表的功能。有任何解决这个问题的方法吗?

    PersonVM cs public class MainWindowVM public MainWindowVM PersonList new ObservableCollection
  • 类的模式是其自身的列表

    考虑以下 object Main case class Foo bar Int extends FooList val self List Foo this Nil abstract class FooList val self List
  • 按值维护 SortedMap

    众所周知 SortedMap 维护按键排序的条目 我在这个论坛上阅读了很多帖子 并看到了很多按值对 SortedMap 进行排序的示例 但是 正如您所知 当我将一个项目放入默认的 SortedMap 时 它不会再次对 Map 进行排序 只是
  • 在枚举的 Java switch 语句中,为什么当我在每种情况下限定我的值时会收到编译错误?

    我在 Java 中的 Enum 上有一个 switch 语句 让我们调用 IMyInterface MyEnum 我的每个案例陈述的形式如下 IMyInterface MyEnum MyValue 尽管如果导入 我可以删除 IMyInter