JAVA 枚举 技术教程文章

深入分析Java反射(二)-数组和枚举

前提 Java反射的API在JavaSE1.7的时候已经基本完善,但是本文编写的时候使用的是Oracle JDK11,因为JDK11对于sun包下的源码也上传了,可以直接通过IDE查看对应的源码和进行Debug。 本文主要介绍反射中可能用到的两个比较特殊的类型,数组和枚举,分别对应java.lang.reflect.Array和java.lang.Enum,后者其实并不是反射类库包中的类,但是反射的基础类库里面有使用枚举类型的方法。 数组类型 数组是一种包含固定数量的相同类型组件(...

Java 枚举(enum)类型详解【代码】

文章目录枚举枚举的定义深入了解枚举类型操作枚举类型成员的方法枚举类型中的构造方法 枚举枚举是 JDK 1.5 中新增的数据类型,取值范围有限,是可以枚举出来的,比如:一周有 7 天,性别有 男、女等。虽然定义类也可以实现,但枚举更简洁、方便。枚举的定义 没有枚举类型时,定义常量常见的方式如下: package demo03;/*** jdk 1.5 以前,定义常量的方式*/ public class ColorConstants {public static final int RED = 1;public s...

2020.1.25 Java枚举详解【代码】【图】

Java枚举枚举类型是什么 JDK5引入了一种新特性,关键字enum 可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用,这就是枚举类型。 一个枚举的简单例子 enum SeasonEnum {SPRING,SUMMER,FALL,WINTER; } 枚举类的常用方法 Enum 常用方法有以下几种:name():返回enum实例声明时的名字 ordinal();返回一个int值,表示enum 实例在声明的次序 equals();返回布尔值,enum实例判断相等 compareTo...

java枚举详解【代码】

一、简介public enum Day {MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY; }一个简单的测试类:public class TestEnum {public static void main(String[] args) {Day today=Day.FRIDAY;switch(today){case MONDAY:System.out.println("today is monday");break;case TUESDAY:System.out.println("today is tuesday");break;case WEDNESDAY:System.out.println("today is webnesday");break;case THURSDAY:System.out...

java-JAXB-从XSD生成类-将枚举转换为除枚举名称之外的自定义toString()【代码】

使用JAXB,我们直接生成Java Bean.在XSD中,我们有一个枚举类型(例如):<xs:simpleType name="ColorType"><xs:restriction base="xs:string"><xs:enumeration value="Red"/><xs:enumeration value="Blue"/><xs:enumeration value="Green"/> </xs:restriction> </xs:simpleType>在数据库中,我们可能有红色,黑色和绿色的标志,例如R,B和G.从某种意义上说,我们的标志只有一个字母词.我想枚举,例如… ColorType.Red.toString()等于R …或类...

在Java中使用枚举或静态字符串变量【代码】

遇到了一个问题,那就是哪个更好用. Java5枚举或静态字符串. 我总是以字符串形式获取数据. 例如 私有静态最终字符串LOAD_DRUGS =“装载毒品”; 或使用Java5枚举public enum LoadType { LOAD_DRUGS("load drugs"); }在我的代码中,我总是收到“加载毒品”类的字符串.我使用if else语句查看基于它的下一步操作.但是我倾向于使用java5枚举并使用switch大小写,但是我总是必须基于我得到的字符串值来获取枚举. 那么,这两种方式的优缺点是什...

[JAVA]枚举类型的应用【代码】

本文介绍枚举类的概念和开发过程中枚举的用法。 枚举类使用enum关键字定义,enum默认继承自Enum类,由于java单继承的特点,enum类无法再继承其他父类 一、枚举类的特性 1、简单枚举类的定义 枚举类用关键字enum定义,成员变量之间用逗号分隔,最后一个成员变量用分号结束。枚举类的命名建议加上Enum后缀。 代码如下: public enum FruitEnum {APPLE,ORANGE,BANANA,PEAR } 枚举的成员变量均为常量,可以通过FruitEnum.APPLE调用,构...

Java 之 枚举(Enum)【代码】

一、枚举1、概述枚举:JDK1.5引入的,类似于穷举,一一罗列出来Java 枚举:把某个类型的对象,全部列出来2、应用什么情况下会用到枚举类型?当某个类型的对象是固定的,有限的几个,那么就可以选择使用枚举。在整个系统的运行期间,有且只有这几个对象。例如: 性别类:只有两个对象:男,女季节类:有4个对象:春、夏、秋、冬 二、JDK1.5之前,实现枚举效果1、需要把构造器私有化:目的:在这个类的外面,无法随意的创建对象2、在...

java-如何在批注中使用不同的枚举类型?【代码】

我正在使用特定于模块的不同枚举定义不同模块的系统常数.现在,我需要定义一个注释,在其中可以指定这些系统常数中的任何一个. 我无法定义注释,因为不同模块的常量具有不同的枚举类型.如果我定义了一个由所有枚举类型实现的接口,那将无法工作,因为不能在注释中使用接口.我总是可以定义String常量而不是枚举.但是有没有办法使用枚举来做到这一点?interface ISystemConstant { }enum ModuleA implements ISystemConstant { // Enum o...

Java-编译器错误-类中定义的枚举不能用于同一类中的泛型替换【代码】

我定义了一个名为IReport的通用接口,该接口采用通用参数类型Tpublic interface IReport<T> {public enum ReportType {YEARLY, MONTHLY, WEEKLY}public String getName();public ReportType getType();public Map<T, List<Cost>> getResults();}一个类正在实现此接口public class WeeklyReport implements IReport<Days> {public enum Days {MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY}@Overridepublic Strin...

Java枚举属性根据访问顺序返回null【代码】

我正在用Java探索枚举,看看它们如何被滥用,并且遇到了无法解释的行为.考虑以下类别:public class PROGRAM {public enum ENUM {;public enum ANIMALS {;public enum CATS {FELIX(DOGS.AKAME),GARFIELD(DOGS.WEED),BUBSY(DOGS.GIN);CATS(DOGS dog) {this.RIVAL = dog;}public DOGS RIVAL;} public enum DOGS {GIN(CATS.FELIX), WEED(CATS.BUBSY), AKAME(CATS.GARFIELD);DOGS(CATS cat) {this.RIVAL = cat;}public CATS RI...

Java枚举是否正确使用/设计?【代码】

我的任务是将一些Java代码转换为C#,并遇到以下枚举(我不得不对此进行概括,因为代码是专有的,很抱歉).该代码的一般目的是将“非基本单位”转换为“基本单位”(例如,从千米到毫米或任何其他单位.它们有大量的转换).我唯一更改的是变量名.模式与代码中的代码完全一样.public enum ThisIsAnEnum implements someInterface { typeKilom( MetricType.kilometer ),typeMillm( MetricType.millimeter );public double convertSometh...

java-通过传递预设序号来获取枚举值【代码】

我看了这个链接:Convert from enum ordinal to enum type 并尝试获取枚举值.但是没有用.我的枚举类是:public enum OrderStatus {OPEN(0),DELIVERED(1),CANCELLED(3),PARTIALLY(4) }我将传递值0,1,3,4,其中2丢失了,所以它没有这样的顺序.如何通过在groovy或java中传递0、1、3或4获得枚举.解决方法:向枚举添加一个字段,并添加一个构造函数:public enum OrderStatus {private Integer codice;public Integer getCodice() {return c...

java-调用通用枚举的getter【代码】

我需要调用字段访问器方法,即通用枚举的getter,但无法弄清楚如何调用这些方法,或更具体地说,如何将通用枚举作为传递方法的参数. 在此先感谢您的帮助. 这就是我想或多或少要做的事情.public void(Class<? extends Enum<?>> enumType) {Enum<?>[] enumConstants = enumType.getEnumConstants();String[] text = new String[enumConstants.length];String[] names = new String[enumConstants.length];for (int i = 0; i < enumConst...

java-静态valueOf()方法的意义是什么? (枚举)【代码】

我正在学习枚举,但不了解此方法的用途. 例:enum Fruits{apple, pear, orange }class Demo{f = Fruits.valueOf("apple"); //returns apple... but I had to type it!// so why wouldn't I save myself some time// and just write: f = Fruits.apple; !?} 解决方法:valueOf方法的重点是为您提供一种获取以字符串形式呈现给程序的Fruits值的方法-例如,当值来自配置文件或用户输入时:String fruitName = input.next(); Fruits f...

java-将抽象类扩展为枚举-策略模式【代码】

我正在尝试在Java中使用设计模式Strategy.因此,我有一个名为Nenuphare的抽象类,它使用一些接口(Mort,AlternationEtat和ModifPV),并且我必须创建5种类型的Nenuphare.如果我是对的,那么我必须保留Nenuphare作为抽象类,否则我想保留在设计模式Strategy中.最简单的方法是创建5个实现Nenuphare的类,并为每个类更改Mort,AlternationEtat和ModifPV.但是我必须用枚举来做到这一点.不幸的是,枚举不能扩展类,因为它已经扩展了枚举类型. 这是我...

具有相同名称的Java枚举和字段【代码】

我最近重构了一些代码,最终遇到了奇怪的编译器错误class CustomerContract{public enum BillingTerm{MONTHLY,QUARTERLY,YEARLY;}public String BillingTerm = ""; }class SalesProposal{public String billingCycles(){String message = "We have several billing cycles available: \n";for(CustomerContract.BillingTerm term : CustomerContract.BillingTerm.values()){message += " - " + term.toString() + "\n";}return mess...

java-枚举的休眠char列【代码】

我将“性别”列作为VARCHAR(1)/ CHAR.如何使用@Entity类中的值(MALE,FEMALE)将值“ M” /“ F”解析为java枚举,而无需使用@Column(name="gender") private Character cGender;并将其手动转换为枚举对象?解决方法:您需要提供自己的转换器:@Convert(converter = GenderConverter.class) @Column(name="gender") private Gender gender;然后实施public class GenderConverter implements AttributeConverter<Gender, Character> {@O...

java-Dynamodb-转换枚举器集合【代码】

有没有办法转换枚举的集合?我已经尝试了以下方法,但均未成功:@DynamoDBTypeConvertedEnum @DynamoDBAttribute(attributeName="myEnums") private Collection<MyEnum> myEnums;解决方法:为了将其保存为集合(即字符串集),请使用具有SS属性类型的@DynamoDBTyped批注.@DynamoDBTyped(DynamoDBAttributeType.SS) @DynamoDBAttribute(attributeName = "myEnums") public Set<MyEnum> getMyEnums() {return myEnums; }

java-比较枚举的值【代码】

实现后缀计算器的前缀,并且需要检查运算符的优先级是否比其他运算符低.这是我到目前为止的内容:public enum Operators {ADD('+', 2), SUBTRACT('-', 2), MULTIPLY('*', 4), DIVIDE('/', 4);private char operator;private int precedence;Operators(char operator, int precedence) {this.operator = operator;this.precedence = precedence;}public char getOperator() {return operator;}public int getPrecedence() {return pr...