首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java:不能在switch语句中使用泛型枚举

在Java中,泛型枚举不能直接在switch语句中使用,因为switch语句需要一个整数或字符串作为条件,而泛型枚举是一种对象类型。但是,可以通过使用泛型枚举的ordinal()方法或者使用if-else语句来实现类似的功能。

以下是一个示例代码:

代码语言:java
复制
public class GenericEnumTest {
    public static void main(String[] args) {
        GenericEnum<String> enumValue = GenericEnum.VALUE1;

        // 使用ordinal()方法
        switch (enumValue.ordinal()) {
            case 0:
                System.out.println("VALUE1");
                break;
            case 1:
                System.out.println("VALUE2");
                break;
            default:
                System.out.println("Unknown");
                break;
        }

        // 使用if-else语句
        if (enumValue == GenericEnum.VALUE1) {
            System.out.println("VALUE1");
        } else if (enumValue == GenericEnum.VALUE2) {
            System.out.println("VALUE2");
        } else {
            System.out.println("Unknown");
        }
    }
}

enum GenericEnum<T> {
    VALUE1,
    VALUE2
}

在这个示例中,我们定义了一个泛型枚举GenericEnum,并在main方法中使用switch语句和if-else语句来处理枚举值。注意,我们使用了枚举的ordinal()方法来获取枚举值在枚举类中的位置,这个位置可以用作switch语句的条件。另外,我们也可以使用if-else语句来比较枚举值,以实现类似的功能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Java基础】Java使用

本篇目录 1- 是什么 2- 的作用 3- 的定义 4- 使用 1 是什么 如下代码是一个使用的实体类,E表示这里类型使用的了,意思是可以为任意类型,也包括引用数据类型...在增加之前,相关程序是使用继承实现。...3 的定义 定义需要在类名或接口名后指定,格式如: public class Test{} 这里的大写英文字母并不是必须是E,但在开发规约一般使用E、K、V、T来定义...4 使用 定义了后,可在类中代码即可使用该字母作为数据类型来定义变量。...没错,Java的很多地方都大规模的使用,接触最多就是集合框架,如: List list=new ArrayList(); 这是我们在初始化一个ArrayList实例对象,

54720

Java的介绍和使用

今天主要给大家说下Java使用以及是什么?...一句话概述就是:可以在类或方法预支地使用未知的类型 那么使用有什么好处呢?...,那就是的通配符 当使用类或者接口时,传递的数据类型不确定,可以通过通配符<?...但是一旦使用的通配符后,只能使用Object类的共性方法,集合中元素自身方法无法使用。 通配符的基本使用 有如下几点 的通配符:不知道使用什么类型来接收的时候,此时可以使用?,?...> collection){ } } 通配符高级使用 之前设置的时候,实际上是可以任意设置的,只要是类就可以设置。但是在JAVA可以指定一个的上限和下限。

83020
  • Java基础教程(14)-Java枚举类,和注解

    Java 由关键字enum 来定义一个枚举类型Java 定义枚举类型的语句有以下特点:1) 使用关键字 enum ;2) 类型名称,比如这里的 Season ;3) 一串允许的值,4) 枚举可以单独定义在一个文件...因为 enum 类型的每个常量在JVM只有一个唯一实例; 枚举 Enum 类的 equals 方法默认实现就是通过 == 来比较的;枚举类可以应用在 switch 语句中。...因为枚举类天生具有类型信息和有限个枚举常量,所以比 int 、 String 类型更适合用在 switch 语句中.什么是Java ( generics) 是 JDK 5 引⼊的⼀个新特性,...;使用时,把参数 替换为需要的class类型指定参数类型时,编译器会给出警告,且只能将 视为 Object 类型可以在接口中定义类型,实现此接口的类必须实现正确的类型编写时...4、 的类型参数不能用在 Java 异常处理的 catch 语句中。因为异常处理是由JVM 在运行时刻来进行的。

    15210

    Java的详细解析,深入分析使用方式

    ,可以称为类型实参 的本质是为了参数化类型 在创建新的类型的情况下,通过指定的不同类型来控制形参具体限制的类型 在使用过程,操作的数据类型被指定为一个参数,这种参数类型可以用在: 类...", "类型相同"); } 可以发现,在编译过后,程序会采取去化措施.也就是说,Java,只在编译阶段有效.在编译过程,正确检验结果后,会将的相关信息擦除,并且在对象进入和离开方法的边界处添加类型检查和类型转换方法...如果传如类型的实参,在类中使用的方法或者成员变量的定义可以为任何类型 Generic genericString = new Generic("1111"); Generic genericInteger...由此可见: 同一种可以对应多个版本,因为参数类型是不确定的 不同版本的类型实例是兼容的 为了解决这样的问题,又不能为了定义一个新的方法来处理Generic,这与Java...,必须与的声明在一起 数组 在Java,不能创建一个确切的类型的数组 /* * 这个数组创建的方式是不允许的 * List[] ls = new ArrayList<String

    1.1K10

    Java使用的必要性

    写过代码的小伙伴们肯定都用过,类型主要用于Java集合;那么我们为什么要在Java集合中使用呢?带着这个问题,我们看下面的一些概念描述,将有助于理解这个问题。...下面的文章,我将使用一个简单例子来说明这个问题。 网络配图 1、首先我们先了解一下的概述 Java实现的目的是要在编译时及时发现错误,而不是在运行时才出现问题。...因为在编译时发现错误并调试程序可以节省很多时间,因为在编译时错误更容易找到并得到修复;大家一定要记住类型只存在于编译时。这是我们学习Java最重要的一个知识点。...2、假设Java没有引入,会发生什么呢?...3、以下代码中使用,会是什么结果?

    76270

    JVM第五卷---编译期处理

    JVM第五卷---编译期处理 编译期处理 默认构造器 自动拆装箱 集合取值--擦除 可变参数 foreach 循环 switch 字符串 switch 枚举 枚举类 try-with-resources...即 代码片段1 都会在编译阶段被转换为 代码片段2 ---- 集合取值–擦除 也是在 JDK 5 开始加入的特性,但 java 在编译代码后会执行 擦除 的动作,即信息在编译为字节码之后就丢失了...args ,从代码的赋值语句中就可以看出来。...注意 switch 配合 String 和枚举使用时,变量不能为null,原因分析完语法糖转换后的代码应当自然清楚 会被编译器转换为: 可以看到,执行了两遍 switch,第一遍是根据字符串的 hashCode...这两个字符串的hashCode值都是2123 ,如果有如下代码: 会被编译器转换为: ---- switch 枚举 switch 枚举的例子,原始代码: 转换后代码: ---- 枚举

    89320

    不了解这12个语法糖,别说你会Java

    块一、 switch 支持 String 与枚举 前面提到过,从Java 7 开始,Java语言中的语法糖在逐渐丰富,其中一个比较重要的就是Java 7switch开始支持String。...因此它的性能是不如使用枚举进行switch或者使用纯整数常量,但这也不是很差。...虚拟机没有,只有普通类和普通方法,所有类的类型参数在编译时都会被擦除,类并没有自己独有的Class类对象。...糖块八 、 断言 在Java,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默认是启动断言检查的(这个时候...——当遇到catch 的类型参数不能用在Java异常处理的catch语句中。因为异常处理是由JVM在运行时刻来进行的。

    69620

    语法糖--JAVA成长之路

    糖块一、 switch 支持 String 与枚举 前面提到过,从Java 7 开始,Java语言中的语法糖在逐渐丰富,其中一个比较重要的就是Java 7switch开始支持String。...所以,对于编译器来说,switch其实只能使用整型,任何类型的比较都要转换成整型。比如byte。short,char(ackii码是整型)以及int。...Java SE5提供了一种新的类型-Java枚举类型,关键字enum可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用,这是一种非常有用的功能。...如在C或CPP,可以通过预处理语句来实现条件编译。其实在Java也可实现条件编译。...在执行的时候默认是启动断言检查的(这个时候,所有的断言语句都将忽略!)

    66820

    jvm 语法糖

    相同擦除类型参数,返回值不同也可以编译成功, 对比方法重载矛盾。 原因:class文件格式,只要描述符不是完全一致的两个方法就可以共存。...擦除:擦除方法code属性字节码擦除,元数据还保留在,可以通过反射获取参数化类型。 3....条件编译:使用条件为常量的if语句,根据布尔常量值的真假,编译器会把分支不成立的代码块消除(接触语法糖阶段) java语言编译方式:将所有编译单元语法书顶级节点输入到待处理列表再进行编译,各个文件之间能相互提供符号信息...枚举类 在JVM字节码文件结构,并没有“枚举”这个类型。Java枚举类型,会在编译期被编译成一个普通了类。 9....字符串的switch支持: switch string条件判断 实际上是对string.hashCode的判断 switch(key.hashCode()) { case 49:

    42220

    3小时Java入门

    因为枚举类也是class, 所以我们可以定义private的构造方法,并且,给每个枚举常量添加字段。 ? 十四,选择结构 Java的选择结构主要有 if 语句switch语句。...switch语句是多分支结构。 1,if 选择语句 ? 2,switch多分支结构 使用switch时不要忘记break,不要忘记default。 ?...二十五, 就是编写模板代码来适应任意类型。Java的容器类中大量使用的好处是使用时不必对类型进行强制转换,它通过编译器对类型进行检查。...Java的实现是使用的擦拭法,编译器编译包含的类时将换成Object类型, 编译器编译实例化的代码时根据的具体类型进行安全转型,而JVM虚拟机对一无所知。...Java中用尖括号来表示,Scala中用方括号来表示Java的数组用花括号来表示,Scala中一般用工厂方法。

    2.7K30

    java基础第八篇之jdk1.5、jdk1.7、jdk1.8新特性

    JDK5新特性 自动装箱和拆箱 增强for循环 静态导入 可变参数 枚举 枚举概述 是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内。举例:一周只有7天,一年只有12个月等。...这才能是枚举java就提供了枚举类供我们使用。...枚举项的用法比较特殊:枚举(“”); 枚举类也可以有抽象方法,但是枚举项必须重写该方法 枚举switch语句中的使用 枚举的几个常见方法 int compareTo(E o) String name...,但每个枚举类都具有该方法,它遍历枚举类的所有枚举值非常方便 JDK7新特性 二进制字面量 数字字面量可以出现下划线 switch 语句可以用字符串 简化 异常的多个catch合并 try-with-resources...使用二进制字面量的好处是,可以使代码更容易被理解。

    47430

    程序员们,再不升级 Java 10 就晚了!

    使用 var关键字可以帮助你减少一些代码的冗长度,尤其是已经存在于变量初始化或者变量名称时。它容易获得且易于理解,不必依靠 IDE 来告诉你变量的具体类型。...▌switch 表达式 有关 switch 语句的多项改进正在进行,其中就包括了全开模式匹配。我对 switch 表达式充满期待。...在以上例子,break 是 case 的唯一语句,如果继续简化,一种类似 lambda 语法的写法可以将上述代码改为: int val = switch (str) { case "foo" ->...▌其他变化 除了上述提到的语言变化之外,还有很多其他的东西可能在近期或者不远的将来出现在 Java 的新版本。...JEP 的提案越来越多,比如支持枚举类型参数的增强枚举、前文已经提到的模式匹配、动态调用、值类型,等等。

    55820

    Java12个常见的语法糖!

    糖块一、 switch 支持 String 与枚举 前面提到过,从Java 7 开始,Java语言中的语法糖在逐渐丰富,其中一个比较重要的就是Java 7switch开始支持String。...因此它的性能是不如使用枚举进行switch或者使用纯整数常量,但这也不是很差。...如在C或CPP,可以通过预处理语句来实现条件编译。其实在Java也可实现条件编译。...糖块八 、 断言 在Java,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默认是启动断言检查的(这个时候...——当遇到catch 的类型参数不能用在Java异常处理的catch语句中。因为异常处理是由JVM在运行时刻来进行的。

    88120

    不懂这12个语法糖,别说你会Java

    糖块一、 switch 支持 String 与枚举 前面提到过,从Java 7 开始,Java语言中的语法糖在逐渐丰富,其中一个比较重要的就是Java 7switch开始支持String。...因此它的性能是不如使用枚举进行switch或者使用纯整数常量,但这也不是很差。 糖块二、 我们都知道,很多语言都是支持的,但是很多人不知道的是,不同的编译器对于的处理方式是不同的。...如在C或CPP,可以通过预处理语句来实现条件编译。其实在Java也可实现条件编译。...糖块八 、 断言 在Java,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默认是启动断言检查的(这个时候...——当遇到catch 的类型参数不能用在Java异常处理的catch语句中。因为异常处理是由JVM在运行时刻来进行的。

    87340

    不了解这 12 个语法糖,别说你会 Java

    糖块一、 switch 支持 String 与枚举 前面提到过,从Java 7 开始,Java语言中的语法糖在逐渐丰富,其中一个比较重要的就是Java 7switch开始支持String。...因此它的性能是不如使用枚举进行switch或者使用纯整数常量,但这也不是很差。...如在C或CPP,可以通过预处理语句来实现条件编译。其实在Java也可实现条件编译。...糖块八 、 断言 在Java,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默认是启动断言检查的(这个时候...——当遇到catch 的类型参数不能用在Java异常处理的catch语句中。因为异常处理是由JVM在运行时刻来进行的。

    53210

    Java的语法糖

    所以在 Java ,真正支持语法糖的是 Java 编译器,真是换汤不换药,万变不离其宗,关了灯都一样。。。。。。 下面我们就来认识一下 Java 的这些语法糖 # 1.1 是一种语法糖。...在 JDK1.5 ,引入了机制,但是机制的本身是通过 类型擦除 来实现的,在 JVM 没有,只有普通类型和普通方法,类的类型参数,在编译时都会被擦除。...并没有自己独特的 Class 类型。...但是在 Java 字节码结构,并没有枚举类型。枚举只是一个语法糖,在编译完成后就会被编译成一个普通的类,也是用 Class 修饰。...# 1.7 Switch 支持字符串和枚举 switch 关键字原生只能支持 整数 类型。

    17420

    Java快速入门

    的包名字必须为:com.happyframework.study,且 App.java 的第一行语句必须为:package com.happyframework.study。...枚举 Java枚举是class,继承自java.lang.Enum,枚举可以定义任何类型可以定义的内容,构造方法只能是private或package private,枚举成员会被编译器动态翻译为枚举实例常量... Java是编译器提供的语法糖,官方称之为:类型参数搽除,先看一下语法,然后总结一点规律: 方法 测试代码 ? 调用方法 ? 输出的结果是 ? 类 测试代码 ? 调用代码 ?...接口 测试代码 ? 调用代码 ? 输出结果 ? 类型参数约束 测试代码 ? 调用代码 ? 输出结果 ? 类型搽除过程 将定义的类型参数去掉。 ?...如果有非类型继承或实现了基类或接口,而且进行了重写,根据情况,编译器会自动生成一些方法。 ? 根据参数的实际参数搽除调用代码。 ?

    91820

    Java12个常见的语法糖!

    糖块一、 switch 支持 String 与枚举 前面提到过,从Java 7 开始,Java语言中的语法糖在逐渐丰富,其中一个比较重要的就是Java 7switch开始支持String。...因此它的性能是不如使用枚举进行switch或者使用纯整数常量,但这也不是很差。...如在C或CPP,可以通过预处理语句来实现条件编译。其实在Java也可实现条件编译。...糖块八 、 断言 在Java,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默认是启动断言检查的(这个时候...——当遇到catch 的类型参数不能用在Java异常处理的catch语句中。因为异常处理是由JVM在运行时刻来进行的。

    1.1K20

    不了解这12个语法糖,别说你会Java

    糖块一、 switch 支持 String 与枚举 前面提到过,从Java 7 开始,Java语言中的语法糖在逐渐丰富,其中一个比较重要的就是Java 7switch开始支持String。...因此它的性能是不如使用枚举进行switch或者使用纯整数常量,但这也不是很差。 糖块二、 我们都知道,很多语言都是支持的,但是很多人不知道的是,不同的编译器对于的处理方式是不同的。...如在C或CPP,可以通过预处理语句来实现条件编译。其实在Java也可实现条件编译。...糖块八 、 断言 在Java,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默认是启动断言检查的(这个时候...——当遇到catch 的类型参数不能用在Java异常处理的catch语句中。因为异常处理是由JVM在运行时刻来进行的。

    79441
    领券