精华内容
下载资源
问答
  • 我可以在Java中设置枚举起始值吗?
    2021-03-11 13:14:31

    使用这种方法的好处是:

    public enum HL_COLORS{

    YELLOW,

    ORANGE;

    public int getColorValue() {

    switch (this) {

    case YELLOW:

    return 0xffffff00;

    case ORANGE:

    return 0xffffa500;

    default://YELLOW

    return 0xffffff00;

    }

    }

    }

    只有一种方法..

    可以使用静态方法并将枚举作为参数传递

    像:

    public enum HL_COLORS{

    YELLOW,

    ORANGE;

    public static int getColorValue(HL_COLORS hl) {

    switch (hl) {

    case YELLOW:

    return 0xffffff00;

    case ORANGE:

    return 0xffffa500;

    default://YELLOW

    return 0xffffff00;

    }

    }

    注意,这两种方法使用的内存更少,处理单元更多。我不认为这是最好的方法,但它只是另一种方法。

    更多相关内容
  • java枚举数组的默认值或初始值

    千次阅读 2021-07-16 20:15:38
    Say I have an enum public enum Day { MONDAY, TUESDAY, ..., SUNDAY }, then I instantiate a day array Day[] days = Day[3];.How do I make a day (eg MONDAY) the default value for all Days in days?...

    Say I have an enum public enum Day { MONDAY, TUESDAY, ..., SUNDAY }, then I instantiate a day array Day[] days = Day[3];.

    How do I make a day (eg MONDAY) the default value for all Days in days? If set up as above, all the elements of day are null. I want by enum to behave more like ints and Strings, which initialize to 0 and "" respectively.

    解决方案

    As others have said, enums are reference types - they're just compiler syntactic sugar for specific classes. The JVM has no knowledge of them. That means the default value for the type is null. This doesn't just affect arrays, of course - it means the initial value of any field whose type is an enum is also null.

    However, you don't have to loop round yourself to fill the array, as there's a library method to help:

    Day[] days = new Day[3];

    Arrays.fill(days, Day.MONDAY);

    I don't know that there's any performance benefit to this, but it makes for simpler code.

    展开全文
  • c# - 选择Enum类型的默认值而不必更改值在C#中,是否可以使用属性修饰Enum类型或执行其他操作来指定默认值应该是什么,而不更改值? 无论出于何种原因,所需的数字可能都是一成不变的,并且仍然可以控制默认值。...

    c# - 选择Enum类型的默认值而不必更改值

    在C#中,是否可以使用属性修饰Enum类型或执行其他操作来指定默认值应该是什么,而不更改值? 无论出于何种原因,所需的数字可能都是一成不变的,并且仍然可以控制默认值。

    enum Orientation

    {

    None = -1,

    North = 0,

    East = 1,

    South = 2,

    West = 3

    }

    Orientation o; // Is 'North' by default.

    xyz asked 2019-03-22T10:15:50Z

    12个解决方案

    293 votes

    enum(实际上是任何值类型)的默认值为0 - 即使它不是enum的有效值。它无法更改。

    James Curran answered 2019-03-22T10:16:01Z

    59 votes

    任何枚举的默认值为零。 因此,如果要将一个枚举器设置为默认值,则将其设置为零,将所有其他枚举器设置为非零(如果有多个枚举器,则第一个枚举值为零的第一个枚举器将是该枚举的默认值 值为零)。

    enum Orientation

    {

    None = 0, //default value since it has the value '0'

    North = 1,

    East = 2,

    South = 3,

    West = 4

    }

    Orientation o; // initialized to 'None'

    如果您的枚举器不需要显式值,那么只需确保第一个枚举器是您想要成为默认枚举器的枚举器,因为“默认情况下,第一个枚举器的值为0,每个连续枚举器的值增加为1.” (C#参考)

    enum Orientation

    {

    None, //default value since it is the first enumerator

    North,

    East,

    South,

    West

    }

    Orientation o; // initialized to 'None'

    Emperor XLII answered 2019-03-22T10:16:34Z

    31 votes

    如果零不能作为正确的默认值,则可以使用组件模型为枚举定义变通方法:

    [DefaultValue(None)]

    public enum Orientation

    {

    None = -1,

    North = 0,

    East = 1,

    South = 2,

    West = 3

    }

    public static class Utilities

    {

    public static TEnum GetDefaultValue() where TEnum : struct

    {

    Type t = typeof(TEnum);

    DefaultValueAttribute[] attributes = (DefaultValueAttribute[])t.GetCustomAttributes(typeof(DefaultValueAttribute), false);

    if (attributes != null &&

    attributes.Length > 0)

    {

    return (TEnum)attributes[0].Value;

    }

    else

    {

    return default(TEnum);

    }

    }

    }

    然后你可以打电话:

    Orientation o = Utilities.GetDefaultValue();

    System.Diagnostics.Debug.Print(o.ToString());

    注意:您需要在文件顶部包含以下行:

    using System.ComponentModel;

    这不会更改枚举的实际C#语言默认值,但会提供一种指示(并获取)所需默认值的方法。

    David answered 2019-03-22T10:17:21Z

    16 votes

    枚举的默认值是枚举等于零。 我不相信这可以通过属性或其他方式改变。

    (MSDN说:“枚举E的默认值是表达式(E)0产生的值。”)

    Joe answered 2019-03-22T10:17:53Z

    9 votes

    你不能,但如果你愿意,你可以做一些技巧。:)

    public struct Orientation

    {

    ...

    public static Orientation None = -1;

    public static Orientation North = 0;

    public static Orientation East = 1;

    public static Orientation South = 2;

    public static Orientation West = 3;

    }

    这个结构的用法是简单的枚举。

    您可以在其中默认创建p.a == Orientation.East(或任何您想要的值)

    要使用技巧本身,您需要通过代码转换为int。

    有实施:

    #region ConvertingToEnum

    private int val;

    static Dictionary dict = null;

    public Orientation(int val)

    {

    this.val = val;

    }

    public static implicit operator Orientation(int value)

    {

    return new Orientation(value - 1);

    }

    public static bool operator ==(Orientation a, Orientation b)

    {

    return a.val == b.val;

    }

    public static bool operator !=(Orientation a, Orientation b)

    {

    return a.val != b.val;

    }

    public override string ToString()

    {

    if (dict == null)

    InitializeDict();

    if (dict.ContainsKey(val))

    return dict[val];

    return val.ToString();

    }

    private void InitializeDict()

    {

    dict = new Dictionary();

    foreach (var fields in GetType().GetFields(BindingFlags.Public | BindingFlags.Static))

    {

    dict.Add(((Orientation)fields.GetValue(null)).val, fields.Name);

    }

    }

    #endregion

    Avram answered 2019-03-22T10:19:06Z

    6 votes

    另一种可能有用的方法 - 使用某种“别名”。例如:

    public enum Status

    {

    New = 10,

    Old = 20,

    Actual = 30,

    // Use Status.Default to specify default status in your code.

    Default = New

    }

    Dmitry Pavlov answered 2019-03-22T10:20:08Z

    6 votes

    实际上,enum的默认值是enum中的第一个元素,其值为0。

    例如:

    public enum Animals

    {

    Cat,

    Dog,

    Pony = 0,

    }

    //its value will actually be Cat not Pony unless you assign a non zero value to Cat.

    Animals animal;

    Cian answered 2019-03-22T10:21:26Z

    3 votes

    The default value of enum is the enummember equal to 0 or the first element(if value is not specified) ...但我在我的项目中使用枚举遇到了严重的问题,并通过以下方式做了一些事情......我的需求如何与班级相关...

    class CDDtype

    {

    public int Id { get; set; }

    public DDType DDType { get; set; }

    public CDDtype()

    {

    DDType = DDType.None;

    }

    }

    [DefaultValue(None)]

    public enum DDType

    {

    None = -1,

    ON = 0,

    FC = 1,

    NC = 2,

    CC = 3

    }

    并得到预期的结果

    CDDtype d1= new CDDtype();

    CDDtype d2 = new CDDtype { Id = 50 };

    Console.Write(d1.DDType);//None

    Console.Write(d2.DDType);//None

    现在如果价值来自DB ......如果在这种情况下好了...在下面的函数中传递值,它会将值转换为枚举...下面的函数处理各种场景并且它是通用的......并且相信我是 非常快 ..... :)

    public static T ToEnum(this object value)

    {

    //Checking value is null or DBNull

    if (!value.IsNull())

    {

    return (T)Enum.Parse(typeof(T), value.ToStringX());

    }

    //Returanable object

    object ValueToReturn = null;

    //First checking whether any 'DefaultValueAttribute' is present or not

    var DefaultAtt = (from a in typeof(T).CustomAttributes

    where a.AttributeType == typeof(DefaultValueAttribute)

    select a).FirstOrNull();

    //If DefaultAttributeValue is present

    if ((!DefaultAtt.IsNull()) && (DefaultAtt.ConstructorArguments.Count == 1))

    {

    ValueToReturn = DefaultAtt.ConstructorArguments[0].Value;

    }

    //If still no value found

    if (ValueToReturn.IsNull())

    {

    //Trying to get the very first property of that enum

    Array Values = Enum.GetValues(typeof(T));

    //getting very first member of this enum

    if (Values.Length > 0)

    {

    ValueToReturn = Values.GetValue(0);

    }

    }

    //If any result found

    if (!ValueToReturn.IsNull())

    {

    return (T)Enum.Parse(typeof(T), ValueToReturn.ToStringX());

    }

    return default(T);

    }

    Moumit answered 2019-03-22T10:26:10Z

    2 votes

    默认值是定义中的第一个。 例如:

    public enum MyEnum{His,Hers,Mine,Theirs}

    Enum.GetValues(typeOf(MyEnum)).GetValue(0);

    这将返回His

    Tony Hopkinson answered 2019-03-22T10:26:44Z

    1 votes

    枚举类型的默认值为0:

    “默认情况下,第一个枚举数的值为0,值为每个连续的调查员增加1.“

    “值类型枚举具有由表达式(E)0生成的值,其中E是枚举标识符“。

    您可以在此处查看C#enum的文档,以及此处的C#默认值表文档。

    acoelhosantos answered 2019-03-22T10:27:38Z

    1 votes

    如果将Default枚举定义为具有最小值的枚举,则可以使用:

    public enum MyEnum { His = -1, Hers = -2, Mine = -4, Theirs = -3 }

    var firstEnum = ((MyEnum[])Enum.GetValues(typeof(MyEnum)))[0];

    firstEnum == Mine.

    这并不假设枚举值为零。

    Tal Segal answered 2019-03-22T10:28:14Z

    -5 votes

    [DefaultValue(None)]

    public enum Orientation

    {

    None = -1,

    North = 0,

    East = 1,

    South = 2,

    West = 3

    }

    然后在您可以使用的代码中

    public Orientation GetDefaultOrientation()

    {

    return default(Orientation);

    }

    Ruslan Urban answered 2019-03-22T10:28:41Z

    展开全文
  • 本篇文章主要介绍了Java 枚举用法详解,枚举的好处:可以将常量组织起来,统一进行管理。有兴趣的可以一起来了解一下。
  • Java中创建枚举并赋初值

    万次阅读 2017-04-18 11:06:50
    枚举在内部其实都是数值,如果只申明枚举而不赋值,是不安全的. public enum TableType { TABLE, VIEW;} 就像上面这样,创建后,并且保存到数据库里.如果后期再添加一个新的,如果添加到了TABLE, VIEW;的中间比如TABLE,...

    枚举在内部其实都是数值,如果只申明枚举而不赋值,是不安全的.

    
    public enum TableType {
        TABLE, VIEW;
    
    }
    

    就像上面这样,创建后,并且保存到数据库里.如果后期再添加一个新的,如果添加到了TABLE, VIEW;的中间比如TABLE,OTHER, VIEW;,那么致命问题就来了,VIEW的值就变了,酿成大错~~~
    so,用到枚举的时候,最好给枚举赋初值.就不会出现上面的错误了
    上面的TableType就可以写为下面的形式:

    public enum TableType {
        TABLE(0), VIEW(1);
    
        private final int value;
        //构造方法必须是private或者默认
        private TableType(int value) {
            this.value = value;
        }
    
        public TableType valueOf(int value) {
            switch (value) {
            case 0:
                return TableType.TABLE;
            case 1:
                return TableType.VIEW;
            default:
                return null;
            }
        }
    
    }
    
    展开全文
  • java枚举类型初始

    千次阅读 2015-08-27 11:50:12
     个人的理解是,枚举就相当于是程序员自己定义的一组变量集合,当需要使用这些变量时,你只能在这个定义好的变量集合中取。 2、作用:  (1)限定取值范围,所有的内容只能从指定的范围中取得;  (2)...
  • java 注解默认值操作

    千次阅读 2021-02-12 14:13:09
    我就废话不多说了,大家还是直接看代码吧~package ...import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotat...
  • Java枚举类型enum的详解及使用最近跟同事讨论问题的时候,突然同事提到我们为什么Java 中定义的常量值不采用enmu 枚举类型,而采用public final static 类型来定义呢?以前我们都是采用这种方式定义的,很少采用enum...
  • 提起Spring,大家肯定不陌生,它是每一个Java开发者绕不过去的坎。Spring 框架为基于 java 的企业应用程序提供了一整套解决方案,方便开发人员在框架基础快速进行业务开发。 我最近一直在研究大厂的面试,发现现在的...
  • 类常量:必须给一个默认值。 int Spring = 1; 枚举类:可以不给默认值 enum{ Spring,Summer,Automn,WInter } . ## 那么问题来了,我在存进数据库的时候 如果...枚举的作用到底是什么,只是在java端做类型校验的吗。
  • Java枚举的反向查找

    2021-02-26 12:56:07
    java枚举常常被用来替代常量值,每个枚举值代表一个特定的常数。在反序列化时有常常需要用到常数到枚举的转换,这就涉及到枚举的反向查找。1、从枚举名反向查找枚举这种方法是最先使用也最为简便的可以用到枚举的...
  • Java 枚举和注解总结

    2021-03-04 04:13:09
    Java 枚举和注解总结枚举没有枚举前我们基本上常量来定义值:public interface Color{public static final int GREEN = 0;public static final int RED = 1;............}如果有了枚举后我们会怎样了?public enum ...
  • java 注解默认值

    千次阅读 2018-11-21 09:12:00
    package com.zejian.annotationdemo... import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Targ...
  • 从字符串创建Java枚举

    2021-03-09 19:59:57
    我有枚举类public enum PaymentType {/*** This notify type we receive when user make first subscription payment.*/SUBSCRIPTION_NEW("subscr_signup"),/*** This notify type we receive when us...
  • /*** 关于枚举类型自定义属性* */public enum Provious {ANHUI("皖", 1),BAIJING("京" ,2);private String value;private int key;private Provious(String value, int key) {this.value = value;this.key ...
  • Java枚举和C枚举的转换——JNI笔记

    千次阅读 2019-04-18 20:05:45
    前言 最近在做中间件相关,遇到一个JAVA和C之间枚举值通过JNI传递的问题。我们知道C语言的枚举型是一个集合,其每...Java枚举和C枚举的转换本质是Java枚举类型和int整型的转换。 两种枚举的特点 新创建的枚...
  • 我们有一个带有枚举字段的实体 – emailCommunicationStatus,我们想要使用JPA注释为其设置默认值 – ‘UNKNOWN’.但是,当我们将实体保存到DB时,此字段的值为null,而不是.对于布尔字段 – isLocked,保存正确的默认值...
  • Java枚举类与注解

    2021-09-29 13:38:54
    枚举类与注解1.1 枚举类1.1.1 枚举类的使用1.1.2 如何定义枚举类1.1.3 enum类中的常用方法1.1.4 使用enum关键字定义的枚举类实现接口的情况1.2 注解(Annotation)1.2.11.2.2 1. 枚举类与注解 1.1 枚举类 1.1.1 枚举...
  • 这一篇内容有点多,但是肯定会很有帮助,很多内容来自《Java核心技术》和《Effective Java》(刚学Java的时候,这本中文版的书非常不建议阅读,本来就不是很好理解,加上令人崩溃的翻译,但是主要内容都写在了这篇...
  • rpc接口尽量不使用枚举类做属性传输
  • 我有这个枚举:public enum SortEnum {asc, desc;}我想用作rest请求的参数:@RequestMapping(value = "/events", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)public List getEvents...
  • 我正在以一种略微“不同”的方式使用Gson,我想知道以下是否可行……我想更改枚举的默认序列化/反序列化格式,以便它使用完全限定的类名,但在所述枚举上保持对@SerializedName注释的支持.基本上,鉴于以下枚举…package...
  • proto3默认值与可选项

    2020-12-19 13:11:52
    proto3默认值与可选项背景介绍目前开发的产品架构采用微服务架构,微服务之间通信的消息格式则使用的proto3标准协议格式。proto介绍全称Protocol Buffers(下面简称PB)是Google公司开发的一种数据描述语言,是一种...
  • Java枚举类和注解

    2021-03-06 23:28:51
    我们称此类为枚举类当需要定义一组常量时,强烈建议使用枚举枚举类的实现:JDK 5.0以前需要自定义JDK 5.0后新增enum关键字用于定义枚举类如果枚举类中只一个对象,则可以作为单例模式的实现方式。枚举类的属性:...
  • Java学习——枚举

    2021-03-15 03:20:42
    Java学习——枚举类摘要:本文主要介绍了Java枚举类。部分内容来自以下博客:https://www.cnblogs.com/sister/p/4700702.htmlhttps://blog.csdn.net/zhou520yue520/article/details/80952404为什么使用枚举枚举...
  • 作用:校验请求参数中,有对应枚举类类型的字段,判断取值是否为枚举类内的值,以及是否可以为空。 借鉴其他大神博客,原文在枚举类中定义校验方法,本文利用反射去除了枚举类中校验方法,实现注解与枚举类解耦。...
  • Java系列之注解

    千次阅读 2021-03-09 20:52:03
    Java 注解(Annotation)又称之为 Java 标注、元数据,是 Java 1.5 之后加入的一种特殊语法,通过注解可以标注 Java 中的类、方法、属性、参数、包等,可以通过反射原理对这些元数据进行访问,注解的使用不会影响程序...
  • Java枚举

    2022-02-14 10:21:04
    枚举Java1.5引入的新特性,通过关键字enum来定义枚举类。枚举类是一种特殊类,它和普通类一样可以使用构造器、定义成员变量和方法,也能实现一个或多个接口,但枚举类不能继承其他类. 该类继承自 Enum类,public ...
  • java枚举运用—对象指定字段格式转换 最近需要把对象中的指定字段加上符号,比如温度这个字段,我在对象中用的Integer去存储,但是现在返回给前端需要找此字段 后面加上单位(如19.8℃)。这样的加上单位的话,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 41,730
精华内容 16,692
关键字:

java枚举默认值

java 订阅