广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >「Java基础入门」Java中switch怎么使用枚举
  • 447
分享到

「Java基础入门」Java中switch怎么使用枚举

javaservletjvm 2023-09-02 19:09:46 447人浏览 安东尼
摘要

在Java开发中,switch语句是一种常用的流控制语句,用于根据不同的条件执行不同的代码块。而当使用枚举类型作为条件时,我们常常会遇到“Constant expression required”的报错问题,这给程序开发造成了不小的困扰。

在Java开发中,switch语句是一种常用的流控制语句,用于根据不同的条件执行不同的代码块。而当使用枚举类型作为条件时,我们常常会遇到“Constant expression required”的报错问题,这给程序开发造成了不小的困扰。

switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。 我们创建一个枚举:

java

复制代码

@Getter @AllArgsConstructor public enum ProductEnum { TYPE_1(1,"精品推荐"), TYPE_2(2,"热门榜单"), TYPE_3(3,"首发新品"), TYPE_4(4,"猜你喜欢"); private Integer value; private String desc; }

用switch语句:

java

复制代码

int a = 0; // order switch (a) { //精品推荐 case ProductEnum.TYPE_1.getValue(): System.out.println("1"); break; //首发新品 case ProductEnum.TYPE_2.getValue(): System.out.println("1"); break; // 猜你喜欢 case ProductEnum.TYPE_3.getValue(): System.out.println("1"); break; // 热门榜单 case ProductEnum.TYPE_4.getValue(): System.out.println("1"); break; }

看上去没有问题,但是因为switch中需要的是一个常量,但是枚举中又是不可以加final关键字,所以会出现这种情况:(Constant expression required:需要常量表达式

我们想要使用就需要封装一个方法在枚举类里面:

java

复制代码

public static ProductEnum toType(int value) { return Stream.of(ProductEnum.values()) .filter(p -> p.value == value) .findAny() .orElse(null); }

封装后的枚举类:

java

复制代码

@Getter @AllArgsConstructor public enum ProductEnum { TYPE_1(1,"精品推荐"), TYPE_2(2,"热门榜单"), TYPE_3(3,"首发新品"), TYPE_4(4,"猜你喜欢"); private Integer value; private String desc; public static ProductEnum toType(int value) { return Stream.of(ProductEnum.values()) .filter(p -> p.value == value) .findAny() .orElse(null); } }

这个时候我们这么用:

java

复制代码

int a = 0; switch (ProductEnum.toType(a)) { //精品推荐 case TYPE_1: System.out.println("1"); break; //首发新品 case TYPE_3: System.out.println("2");; break; // 猜你喜欢 case TYPE_4: System.out.println("3"); break; // 热门榜单 case TYPE_2: System.out.println("4"); break; }

这样就没问题啦:

当我们在处理枚举类型时,遇到了“需要常量表达式”的问题。针对这个问题,我们可以按照上述方法进行处理,将枚举的值转化成枚举类型,来避免编译错误。

除此之外,值得一提的是,在实际应用中,枚举也是一种非常重要的数据类型。它可以用于表示各种状态、选项以及配置项,还可以为程序中的常量命名,以减少硬编码。因此,熟练掌握枚举类型的相关操作,是我们开发高效、优质代码所必不可少的基本技能。

总之,本文向大家介绍了如何在Java开发中处理枚举类型,让大家更好地理解和掌握switch语句的使用方法。希望大家能够通过学习和实践,巩固这些基础知识,并在日常工作中充分发挥它们的应用价值,为自己的开发工作提升整体效率与质量。

作者:掉头发的王富贵
链接:https://juejin.cn/post/7241216722892226615

来源地址:https://blog.csdn.net/BASK2312/article/details/131070034

--结束END--

本文标题: 「Java基础入门」Java中switch怎么使用枚举

本文链接: https://www.lsjlt.com/news/391297.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 「Java基础入门」Java中switch怎么使用枚举
    在Java开发中,switch语句是一种常用的流控制语句,用于根据不同的条件执行不同的代码块。而当使用枚举类型作为条件时,我们常常会遇到“Constant expression required”的报错问题,这给程序开发造成了不小的困扰。 ...
    99+
    2023-09-02
    java servlet jvm
  • Java中的枚举怎么使用
    本篇内容主要讲解“Java中的枚举怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中的枚举怎么使用”吧!枚举(enum)枚举是一个被命名的整型常数的集合,用于声明一组带标识符的常数...
    99+
    2023-07-05
  • 枚举怎么在Java中使用
    本篇文章给大家分享的是有关枚举怎么在Java中使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。使用方法如下:package com.ljq.test;public class...
    99+
    2023-05-31
    java 枚举 ava
  • 怎么用好Java中的枚举
    本篇内容主要讲解“怎么用好Java中的枚举”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用好Java中的枚举”吧!1、概览enum关键字在 java5 中引入,表示一种特殊类型的类,其总是继...
    99+
    2023-06-16
  • Java基础入门Swing中间容器的使用
    目录Java基础入门 Swing中间容器下面举例说明一下JScrollPane的方法Java Swing顶层容器类Swing拥有三个常用的顶层容器类Java基础入门 Swing中间容...
    99+
    2022-11-12
  • Java的贪心和枚举怎么使用
    今天小编给大家分享一下Java的贪心和枚举怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。笔试技巧:学会根据数据范围猜...
    99+
    2023-06-29
  • 怎么在java中使用枚举实现单例
    怎么在java中使用枚举实现单例?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Java的优点是什么1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应用程序;2. ...
    99+
    2023-06-14
  • Java枚举类在生产环境中怎么使用
    这篇文章主要讲解了“Java枚举类在生产环境中怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java枚举类在生产环境中怎么使用”吧!使用大体分为确定业务场景状态、定义枚举类、自定义查...
    99+
    2023-06-29
  • Java基础入门篇之如何使用For循环
    这篇文章主要讲解了“Java基础入门篇之如何使用For循环”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java基础入门篇之如何使用For循环”吧! 一、for循环语句在java中...
    99+
    2023-06-15
  • 怎么使用java枚举实现单例模式
    这篇文章主要介绍了怎么使用java枚举实现单例模式的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用java枚举实现单例模式文章都会有所收获,下面我们一起来看看吧。用法说明:在功能上类似于 public 字...
    99+
    2023-07-04
  • 怎么在java中使用switch
    本篇文章给大家分享的是有关怎么在java中使用switch,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、We...
    99+
    2023-06-14
  • Switch怎么在Java中使用
    Switch怎么在Java中使用?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、java当中的switch与C#相比有以下区别注:在java中switch后的表达式的类型只能...
    99+
    2023-05-30
    java switch
  • Java基础之FastJson怎么使用
    FastJson是一个Java的JSON解析库,可以将Java对象转换为JSON格式的字符串,也可以将JSON格式的字符串转换为Ja...
    99+
    2023-08-16
    Java FastJson
  • Java基础中常量怎么用
    这篇文章主要为大家展示了“Java基础中常量怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java基础中常量怎么用”这篇文章吧。public class FinalVa...
    99+
    2023-06-02
  • Java基础之反射怎么使用
    本篇内容介绍了“Java基础之反射怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!反射是框架设计的灵魂(使用的前提条件:必须先得到代表...
    99+
    2023-07-05
  • Java基础入门篇之如何使用面向对象和类的定义
    这篇文章主要讲解了“Java基础入门篇之如何使用面向对象和类的定义”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java基础入门篇之如何使用面向对象和类的定义”吧!一、面向对象面向对象是在程...
    99+
    2023-06-15
  • java基础之JVM中GC算法怎么用
    这篇文章主要介绍了java基础之JVM中GC算法怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。JVM内存组成结构:(1)堆所有通过new创建的对象都是在堆中分配内存,其...
    99+
    2023-05-30
    java jvm gc
  • Java基础知识中ByteArrayOutputStream流的使用方法是什么
    Java基础知识中ByteArrayOutputStream流的使用方法是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Java ByteArrayOutputStream...
    99+
    2023-06-22
  • Java基础知识中StringWriter流的使用方法是什么
    本篇文章为大家展示了Java基础知识中StringWriter流的使用方法是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java StringWriter流的使用一、StringWriter流...
    99+
    2023-06-22
  • Java中BigDecimal的舍入模式怎么使用
    这篇文章主要讲解了“Java中BigDecimal的舍入模式怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中BigDecimal的舍入模式怎么使用”吧!BigDecimal的...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作