我有一个用于跟踪重要系统变量的util类:
public static final String REQUEST_ADDRESS = "http.request.address";
public static final String REQUEST_PORT = "http.request.port";
public static final String get(String property) {
return System.getProperty(property);
}
我可以像这样检索这些值:
String port = SystemPropertyHelper.get(SystemPropertyHelper.REQUEST_PORT);
在Java中,是否有可能将它们视为枚举?
REQUEST_PORT {
return System.getProperty("http.request.port");
}
String port = SystemPropertyHelper.REQUEST_PORT;
答案 0 :(得分:3)
我就这样解决了。
public static final String REQUEST_PORT = System.getProperty("http.request.port");
答案 1 :(得分:2)
enum SystemPropertyHelper {
REQUEST_PORT("http.request.port"), ...;
private String key;
Config(String key) {
this.key = key;
}
public String get() {
return System.getProperty(key);
}
}
并像SystemPropertyHelper.REQUEST_PORT.get();
答案 2 :(得分:2)
当然,您可以像这样创建enum
,这样您就可以访问属性名称和值:
public enum SystemPropertyEnum {
REQUEST_PORT("http.request.port"),
REQUEST_ADDRESS("http.request.address");
private String propertyName;
private String value;
SystemPropertyEnum(final String propertyName) {
this.propertyName = propertyName;
this.value = System.getProperty(propertyName);
}
public String getPropertyName() {
return propertyName;
}
public String getValue() {
return value;
}
}
但是,如@halloei所示,您可以通过仅为您的属性使用public static final String
变量来避免调用getter。
答案 3 :(得分:1)
你也可以这样做:
public enum Properties {
REQUEST_PORT("http.request.port"),
REQUEST_USE_SSL("http.request.ssl");
// Add others...
private final String value;
Properties(String value) {
this.value = System.getProperty(value);
}
public String getValue() {
return this.value;
}
}
这可以像:
String port = Properties.REQUEST_PORT.getValue();