Java:在子类下使用带有枚举的switch语句

首先,我将说明我对C#中的枚举更加熟悉,看起来java中的枚举非常混乱。

正如您所看到的,我正在尝试在下一个示例中使用switch语句@enums,但无论我在做什么,我总是会收到错误。

我收到的错误是:

必须使用不合格的枚举常量VALUE_A替换合格的案例标签SomeClass.AnotherClass.MyEnum.VALUE_A

事情是我非常理解错误,但我不能只编写VALUE_A,因为枚举位于另一个子类中。 有没有办法解决这个问题? 为什么它会在Java中发生?

//Main Class

public class SomeClass {

//Sub-Class

public static class AnotherClass {

public enum MyEnum {

VALUE_A, VALUE_B

}

public MyEnum myEnum;

}

public void someMethod() {

MyEnum enumExample //...

switch (enumExample) {

case AnotherClass.MyEnum.VALUE_A: {

//..

break;

}

}

}

}

5个解决方案

425 votes

把它改成这个:

switch (enumExample) {

case VALUE_A: {

//..

break;

}

}

线索出现错误。 您不需要使用枚举类型限定case标签,只需使用其值。

darrengorman answered 2019-03-17T18:58:39Z

27 votes

Java自动推断case中元素的类型,因此标签必须是不合格的。

int i;

switch(i) {

case 5: //

}

MyEnum e;

switch (e) {

case VALUE_A: //

}

Kru answered 2019-03-17T18:59:04Z

2 votes

这应该做:

//Main Class

public class SomeClass {

//Sub-Class

public static class AnotherClass {

public enum MyEnum {

VALUE_A, VALUE_B

}

public MyEnum myEnum;

}

public void someMethod() {

AnotherClass.MyEnum enumExample = AnotherClass.MyEnum.VALUE_A; //...

switch (enumExample) {

case VALUE_A: { //

//..

break;

}

}

}

}

Woyzeck answered 2019-03-17T18:59:28Z

0 votes

以这种方式写someMethod():

public void someMethod() {

SomeClass.AnotherClass.MyEnum enumExample = SomeClass.AnotherClass.MyEnum.VALUE_A;

switch (enumExample) {

case VALUE_A:

break;

}

}

在switch语句中,您必须仅使用常量名称。

dash1e answered 2019-03-17T19:00:00Z

0 votes

这就是我使用它的方式。 它的工作非常出色 -

public enum Button {

REPORT_ISSUES(0),

CANCEL_ORDER(1),

RETURN_ORDER(2);

private int value;

Button(int value) {

this.value = value;

}

public int getValue() {

return value;

}

}

而switch-case如下图所示

@Override

public void onClick(MyOrderDetailDelgate.Button button, int position) {

switch (button) {

case REPORT_ISSUES: {

break;

}

case CANCEL_ORDER: {

break;

}

case RETURN_ORDER: {

break;

}

}

}

Jimit Patel answered 2019-03-17T19:00:32Z

java+switch语句+枚举_Java:在子类下使用带有枚举的switch语句相关推荐

  1. java运行class文件_java命令行下运行class文件

    今天碰到了一个很变态的问题,写了一个很简单的HelloWord.java,内容如下: package com.yanjiuyanjiu; public class HelloWorld { publi ...

  2. java src 文件路径_java获取src下文件路径和获取webRoot下文件路径

    获取src下的fileurl.properties文件路径 this.getClass().getResource("/fileurl.properties").getPath() ...

  3. JAVA生产环境验证_Java生产环境下性能监控与调优详解

    本课程将为你讲解如何在生产环境下对Java应用做性能监控与调优:通过本课程,你将掌握多种性能监控工具应用,学会定位并解决诸如内存溢出.cpu负载飙高等问题:学会线上代码调试,Tomcat.Nginx, ...

  4. Java笔记(一)向上向下转型,枚举,初始化,可变长参数,代理,多态,继承

    写给自己看的笔记,很乱.如果有人感兴趣也可以看看,有问题可以问,我进行补充 这里写目录标题 Java数组传递 for循环 Java引用类型详解 可变长参数 ... 可变参数列表 Java参数类型变化 ...

  5. java 线程池 包_Java并发包下线程池类小结

    并发包下的线程池技术虽然常用,但是知识点较多易忘.所以,参考网络资源做了一个小结,便于复习. 1.Executor接口 用于执行已提交的Runnable任务. Paste_Image.png 2.Ex ...

  6. java结束内层循环_java中结束循环的标志break和continue语句

    break语句:用于结束整个循环,只能用于switch 和循环语句中. 当break使用在嵌套的循环中时,结束的是其所在的循环(即内循环) 那么怎样才能使其结束外层循环呢?这时就要使用跳转语句标记(标 ...

  7. java 模拟键盘输入_Java 在windows 下模拟鼠标键盘的输入

    Java提供了一个很好的自动化测试类供我们去模拟鼠标键盘消息.以下是Robot的主要方法 Robot类的主要方法详细信息 1.mouseMove(int x,int y)将鼠标指针移动到给定屏幕坐标: ...

  8. ubuntu java 全屏显示_java 在ubuntu下实现全屏,上面的状态栏依然显示。如下图,不想要上面的状态栏...

    源代码://-------------------------------------TestLogIn类importjavax.swing.*;importjava.awt.*;publicclas ...

  9. java util包类_java.util包下的类及常用方法

    1.日期类 Date类 常用方法 ​创建日期对象:Date date = new Date ( ) ; ​获取当前时间 以标准格式:date ​获取当前时间的毫秒数:date.getTIme ( ) ...

最新文章

  1. Windows 技术篇-win+R运行搜索gpedit.msc提示“MMC 不能打开文件”解决方法
  2. lamp兄弟连视频笔记
  3. zip版mysql5.6_mysql 5.6 压缩包版安装方法
  4. 安装和运行Maven
  5. 六个细节改变提升 Android L 用户体验
  6. 【路径规划】基于matlab GUI改进的遗传算法机器人栅格地图避障路径规划【含Matlab 703期】
  7. Winform的菜单控件
  8. 如何避免出现SQL注入漏洞
  9. 【数据结构与算法】车辆路径问题(Vehicle Routing Problem,VRP)
  10. 2017年全国大学生电子设计竞赛报告(F题)调幅信号处理实验电路
  11. 火车头采集器文章伪原创插件工具
  12. HFSS Wave Port设置
  13. 【Unity】 HTFramework框架(十)Resource资源管理器
  14. 浅谈GOF设计模式之建造者模式(五)
  15. Appops权限管理
  16. 可视化搭建平台的参考网格线设计
  17. linux重启和关闭系统命令
  18. 操作无法完成。打印后台程序服务没有运行
  19. 阿里云Java后端一面面经
  20. 一加3t氢android8_一加3t氢android8_一加氢OS推出Android 8.0正式版 新系统流畅到飞起...

热门文章

  1. 从零开始学前端:if判断,for循环,,switch判断 --- 今天你学习了吗?(JS:Day4)
  2. trunk口_南京课工场IT培训:VLAN、Trunk与三层交换机的相关理论知识
  3. 比目鱼搜索不能用了_win10搜索功能失效解决办法
  4. 微课|中学生可以这样学Python(例5.6、例5.7):集合应用
  5. Python使用多线程搜索指定范围内的所有素数
  6. Python使用numpy滤除图像中的低频信号
  7. python 批量网址 网页截图_python实现网页截图
  8. 离职通知邮件主题写什么好_(原创)拿到了企业的offer后要注意什么?
  9. 机器视觉--图像形态学
  10. java split 正则_java split方法的实现 正则匹配