Java工作笔记-枚举类型反射

这里枚举类型有自己的反射方式:

这里我先总结下逻辑:

1. 通过getEnumConstatnts返回目前枚举中存在的对象。

2. 通过getMehod获取方法。

3. 最后用这个对象调用其方法。

程序运行截图如下:

其中对应的枚举:

源码如下:

Em.java

package en;

public enum Em {

    ONE_EM(10001, "ONE"),
    TWO_EM(10002, "TWO"),
    THREE_EM(10003, "THREE");

    private Integer emID;
    private String emString;

    Em(Integer emID, String emString){

        this.emID = emID;
        this.emString = emString;
    }

    public Integer getEmID() {
        return emID;
    }

    public String getEmString() {
        return emString;
    }
}

main.java

import en.Em;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class main {

    public static void main(String args[]) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {

        //打印反射数据
        Class emCLass = Em.class;
        Object[] enumConstants = emCLass.getEnumConstants();
        Method getEnumID = emCLass.getMethod("getEmID");
        Method getEnumString = emCLass.getMethod("getEmString");

        for(Object item : enumConstants){

            Object invokeID = getEnumID.invoke(item);
            Object invokeString = getEnumString.invoke(item);
            System.out.println("invokeID:" + invokeID + "\tinvokeString:" + invokeString);
        }
    }
}
发布了1331 篇原创文章 · 获赞 7073 · 访问量 256万+

猜你喜欢

转载自blog.csdn.net/qq78442761/article/details/105412474
今日推荐