有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将所有接口读入列表

如何将所有TaskStatusConstant接口项自动转换为一个List<String>

public interface TaskStatusConstant {

    final static String NEW = "New";
    final static String ACCEPTED = "Accepted";
    final static String REJECTED = "Rejected";
    final static String REASSIGNED = "Reassigned";
    final static String COMPLETED = "Completed";

}

共 (4) 个答案

  1. # 1 楼答案

    public enum TaskStatusConstant2 {
           NEW("New"), ACCEPTED("Accepted"), REJECTED("Rejected"), REASSIGNED("Reassigned"), COMPLETED("Completed");
    
           private String value;
    
           private TaskStatusConstant2(String value) {
              this.value = value;
           }
           public String getStatus() {
              return value;
           }
    }
    

    刚刚试过这个。。。不确定这是否适用于我的其他代码:)

  2. # 2 楼答案

    可以使用反射,例如:

        List<String> constants = new ArrayList<String>();
        Field[] fields = TaskStatusConstant.class.getFields();
        for (Field field : fields) {
            if (field.getType().equals(String.class)) {
                constants.add(field.getName());
            }
        }
        for (String constant : constants) {
            System.out.println(constant);
        }
    
  3. # 3 楼答案

    使用enum(推荐,有很多好处)

    public enum TaskStatusConstant {
               NEW("New"),
          ACCEPTED("Accepted"),
          REJECTED("Rejected"),
        REASSIGNED("Reassigned"),
         COMPLETED("Completed");
    
        private final String toString;
    
        private TaskStatusConstant(String toString) {
            this.toString = toString;
        }
    
        @Override
        public String toString() {
            return toString;
        }
    
        public static List<String> valuesAsString() {
            List<String> list = new ArrayList<String>();
            for(TaskStatusConstant c : values()) {
                list.add(c.toString());
            }
    
            return list;
        }
    }
    

    使用反射(不推荐,这很麻烦,有时是必要的)

    public static List<String> valuesAsString()
    throws IllegalAccessException {
        List<String> list = new ArrayList<String>();
        for(Field f : TaskStatusConstant.class.getDeclaredFields()) {
            if(f.getType() == String.class) {
                f.setAccessible(true);
                list.add((String)f.get(null));
            }
        }
    
        return list;
    }
    
  4. # 4 楼答案

    这些信息应以enumeration格式表示

    public enum TaskStatusConstant {
       NEW,
       ACCEPTED,
       REJECTED,
       REASSIGNED,
       COMPLETED
    }
    

    要在Java中迭代枚举,请使用以下命令:

    for (TaskStatusConstant task: TaskStatusConstant.values()) {
      // do what you want
    }