作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个基本的配置类,它提供了所有可能的键和枚举中相应值类型的类型,如下所示:
public class Configuration {
public static enum Key {
FIRST_KEY("actual key 1", Long.class),
ANOTHER_KEY("actual key 2", Integer.class)
public final String value;
public final Class type;
Key(String value, Class type) {
this.value = value;
this.type = type;
}
}
}
我想做的是编写一个方法,从字符串中解析给定键的值并将该值作为适当的类型返回。基本上是这样的:
public <T> T getValue(Key<T> key, String valueStr);
这种尝试在方法声明处已经失败,因为 Java 中的枚举似乎不能有类型参数。关于如何实现与此类似的东西有什么想法吗?
最佳答案
你可以简单地
public <T> T getValue(Key key, String valueStr);
虽然它缺少编译时检查,所以这将通过编译
Short value = getValue(FIRST_KEY, string); // should be Long
更好的答案?不要使用 enum
!制作Key<T>
一个普通的类(class)。
public static class Key<T>
{
public static final Key<Long> FIRST_KEY
= new Key("actual key 1", Long.class);
...
public final String value;
public final Class<T> type;
Key(String value, Class<T> type) {
this.value = value;
this.type = type;
}
}
关于java - Java 中的通用枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12604423/
我是一名优秀的程序员,十分优秀!