hello2060
V2EX  ›  Java

问个简单的问题

  •  
  •   hello2060 · Apr 20, 2021 · 2594 views
    This topic created in 2023 days ago, the information mentioned may be changed or developed.

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

    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
    jjwjiang
    Apr 20, 2021
    1
    这不典型的反射场景吗
    Littlerain
    Littlerain
    Apr 20, 2021
    2
    ```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
    hhyyd
    Apr 20, 2021 via Android
    3
    常量完全可以存 enum,然后 getValues()
    hhyyd
    hhyyd
    Apr 20, 2021 via Android
    4
    @hhyyd 哦,不是 get,直接.values()
    hello2060
    hello2060
    OP
    Apr 20, 2021 via iPhone
    5
    谢谢各位,确实可以用反射,谢谢啦
    hello2060
    hello2060
    OP
    Apr 20, 2021 via iPhone
    6
    @hhyyd enum 应该也可以
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3296 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 05:07 · PVG 13:07 · LAX 21:07 · JFK 00:07
    ♥ Do have faith in what you're doing.