V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hello2060
V2EX  ›  Java

问个简单的问题

  •  
  •   hello2060 · 2021-04-20 08:44:27 +08:00 · 1447 次点击
    这是一个创建于 1343 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一个类里面定义了很多常量

    public class Codes {
    
        static final public ErrorCode ISSUE_1 = new ErrorCode(XXX);  
        static final public ErrorCode ISSUE_2 = new ErrorCode(XXX);
        
        // 一共上百个定义 
    }
    

    现在要一个 Codes.getAll() 返回所有定义的 ErrorCode 。

    请问有啥好点的方法吗?

    jjwjiang
        1
    jjwjiang  
       2021-04-20 09:05:09 +08:00
    这不典型的反射场景吗
    Littlerain
        2
    Littlerain  
       2021-04-20 09:13:54 +08:00
    ```java
    static List<ErrorCode> errorCodes;
    static {
    errorCodes = = new ArrayList<>();
    for(Field f : Codes.class.getDeclaredFields()) {
    if (f.getType() == ErrorCode.class) {
    ErrorCodes.add(f.get(new ErrorCode()))
    }
    }
    }
    ```
    hhyyd
        3
    hhyyd  
       2021-04-20 09:14:50 +08:00 via Android
    常量完全可以存 enum,然后 getValues()
    hhyyd
        4
    hhyyd  
       2021-04-20 09:16:07 +08:00 via Android
    @hhyyd 哦,不是 get,直接.values()
    hello2060
        5
    hello2060  
    OP
       2021-04-20 09:19:25 +08:00 via iPhone
    谢谢各位,确实可以用反射,谢谢啦
    hello2060
        6
    hello2060  
    OP
       2021-04-20 09:19:52 +08:00 via iPhone
    @hhyyd enum 应该也可以
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1000 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 21:11 · PVG 05:11 · LAX 13:11 · JFK 16:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.