java枚举enum类中的values()

近两天在看spring源码时在用EA工具逆向生成spring-web的ER图看到了HttpMethod()这个枚举类,如图
这里写图片描述
这个类中的静态块
static {
for (HttpMethod httpMethod : values()) {
mappings.put(httpMethod.name(), httpMethod);
}
}
用到了values();使用ecplise搜索了它的本类发现没有这个方法,然后查看了枚举类枚举类型的公共基本类也没有该方法。然后查阅网上资料得知,
最直接的方法就是查阅JDK的文档了,Oracle在线文档的地址在这里:
http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html
从阅读文档得知,Java编译器会自动在enum类型中插入一些方法,其中就包括values()——所以我们的程序在没编译的时候,自然没法查看values()方法的源码了。
如下是我实验过的类
package com;

public enum EnumTest {

BLACK(2,"黑色"),pine,
RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);

private String name;
private int index;
EnumTest(String name, int index) {
    this.name = name;
    this.index = index;
}
EnumTest() {
}
EnumTest(int index,String name) {
    this.index=index;
    this.name = name;
}
public static void getPerName(){
    for(EnumTest enumTest:values()){
        System.out.println(enumTest.name());
    }
}
public static String getName(int index) {
    for (EnumTest c : EnumTest.values()) {
        if (c.getIndex() == index) {
            return c.name;
        }
    }
    return null;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public int getIndex() {
    return index;
}
public void setIndex(int index) {
    this.index = index;
}

}
在cmd中先使用javac编译EnumTest,然后在使用javap反编译EnumTest.class
这里写图片描述
从图中可以看出该类是继承自java.lang.enum;而且自动增加了values()、valueOf()等方法。还有一个空的static{}静态块。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值