简体   繁体   English

如何创建对常量的动态引用?

[英]How Can I create a dynamic reference to a Constant?

I want to make a dynamic call to get a Constant from Constants.java based on the field Name?我想根据字段名称进行动态调用以从 Constants.java 获取常量?

Ex.前任。

public class Constants {
  
  public static final String FIELD1 = "field1";
  public static final String FIELD2 = "field2";
}

And how can I get value based on the field paramter?以及如何根据字段参数获得价值?

private String getConstant(String field){
  //field parameter can be many values for field paramter not just Field1 or Field2
  return Constant.field;
}

You need to read about reflection mechanism.您需要阅读有关反射机制的信息。 Try this:尝试这个:

private String getConstant(String field) throws NoSuchFieldException, IllegalAccessException {
  // one field only:
  return Constants.class.getField(field).get(null);
}

Look like you need an enum (which are similar to constants):看起来你需要一个enum (类似于常量):

public enum Constant {
    FIELD1("field1"),
    FIEL21("field2"),
    // etc
    ;
    private String str;

    Constant(String str) {
        this.str = str;
    }
    
    public String getStr() {
        return str;
    }
}

Then to get the String:然后获取字符串:

private String getConstant(String field) {
    return Constant.valueOf(field).getStr();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM