`

java 枚举values()方法

    博客分类:
  • java
阅读更多
      工作中,同事在枚举类中用到了values()方法,自己没用过,又点不进去,看不到api,于是做了下测试,也百度了下,才明白咋回事,demo如下


package test;

import com.google.common.collect.Maps;

import java.util.Map;

/**
 *
 */
public enum TestEnum {

    A(1, "苹果"), //
    B(2, "香蕉"), //
    ALL(3, "全部"); //

    private int code;
    private String desc;

    private static final Map<Integer, TestEnum> MAP = Maps.newHashMapWithExpectedSize(values().length);

    static {
        for (TestEnum applyTypeEnum : TestEnum.values()) {
            MAP.put(applyTypeEnum.getCode(), applyTypeEnum);
        }
    }

    public static TestEnum get(int code) {
        return MAP.get(code);
    }

     TestEnum(int code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    public int getCode() {
        return code;
    }

    public String getDesc() {
        return desc;
    }

    public static void main(String[] args) {
        System.out.println(values().length);
        TestEnum[] values = values();
        for (TestEnum value : values) {
            System.out.println(value+"  "+value.code+"   " +value.desc);
        }
    }
}


执行结果如下:
3
A  1   苹果
B  2   香蕉
ALL  3   全部

参考下该文章后:
https://blog.csdn.net/u013469218/article/details/66476182

引用:
最直接的方法就是查阅JDK的文档了,Oracle在线文档的地址在这里:
http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html
从阅读文档得知,Java编译器会自动在enum类型中插入一些方法,其中就包括values()——所以我们的程序在没编译的时候,自然没法查看values()方法的源码了。
文档描述:





  • 大小: 68.5 KB
分享到:
评论

相关推荐

    java 中枚举类enum的values()方法的详解

    主要介绍了java 中枚举类enum的values()方法的详解的相关资料,希望通过本文大家能够掌握这部分内容,需要的朋友可以参考下

    枚举(switch、覆盖枚举、实现接口等)

    现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。 public enum Color { RED, GREEN, BLANK, YELLOW } 用法二:switch JDK1.6之前的switch语句只支持int,char,...

    说说Java的枚举类型

     JDK5中提供了Java枚举类型的实现,与其说是一种新类型,倒不如说是一种语法糖。  public enum Season {  SPRING,  SUMMER,  AUTUMN,  WINTER  }  通过反编译工具 jad来看看这段代码是如何实现的...

    java中的枚举类型详细介绍

    枚举中有values方法用于按照枚举定义的顺序生成一个数组,可以用来历遍;接下来将详细介绍

    sealerate:一个scala便捷库,可从密封类中获取Java枚举功能

    Sealerate是一个小型(无第三方依赖)库,提供便利函数values[T]和collect[T] ,这些函数动态创建一组密封类的所有实例。 设置 Sealerate可用于Scala 2.10、2.11、2.12和2.13。 如果您使用的是sbt,请将以下内容...

    【05-面向对象(下)】

    •在java类里只能包含Field,方法,构造器,初始化块,内部类(接口、枚举)等5种成员。 用static修饰的类成员属 于类成员,类Field既可通过类来访问,也可以通过类的对象来访问。当通过对象来访问类属性时,系统会在底...

    JSP 中Hibernate实现映射枚举类型

    Java BO类Gender是枚举类型,想在数据库中存成字符串格式,如何编写hbm.xml? public enum Gender{ UNKNOWN(Unknown), MALE(Male), FEMALE(Female); private String key; private Gender(final String key) {...

    dart-enums:在 Dart 中创建枚举的库

    很大程度上受 Java 的枚举特性的启发,这个库提供了一个可扩展的 Enum 类,该类为所有枚举实例提供一个序数和一个名称。 还提供了一个valueOf构造函数和values()可迭代的。 使用示例: class MyEnum extends ...

    values4j-开源

    用于构建特定领域的不可变值对象(如帐号)的 Java 框架。 也支持枚举值(货币、国家、..)。 提供依赖于语言的解析和格式。

    spring.net中文手册在线版

    17.9. Mapping DBNull values 17.10. Basic data access operations 17.10.1. ExecuteNonQuery 17.10.2. ExecuteScalar 17.11. Queries and Lightweight Object Mapping 17.11.1. ResultSetExtractor 17.11.2. ...

    reconstant:在编程语言之间共享常量定义,并使常量再次常量

    Reconstant使您可以在编程语言之间共享常量和枚举定义。 常量在yaml文件中定义,并以多种编程语言转换为惯用定义。 支持的输出包括C / CPP头文件,Python3(使用enum模块),Python2,Javascript,VueMixins和Java...

    xml入门教程/xml入门教程

    &lt;script value="java"/&gt;(空元素) (属性名=“属性值”)&gt;张三 XSLT,是用于对XML进行文档格式转换,把一个XML文档转换成另一种格式的XML文档,但是其中内容是不变的。 &2.DTD(Document Type Difinition DTD...

Global site tag (gtag.js) - Google Analytics