如何在 Java 中实例化泛型类型?
我已使用 java.util.Properties
向我的应用添加了一个人类可读的配置文件,并尝试在其周围添加一个包装器,以使类型转换更容易。具体来说,我希望返回的值从提供的默认值“继承”其类型。以下是我到目前为止所得到的:
protected <T> T getProperty(String key, T fallback) {
String value = properties.getProperty(key);
if (value == null) {
return fallback;
} else {
return new T(value);
}
}
然后,无论它是否从属性文件中读取,并且对于字符串,整数,双精度和&c,返回值都将是布尔值。当然,上面的代码段实际上并没有编译:getProperty("foo", true)
PropertiesExample.java:35: unexpected type
found : type parameter T
required: class
return new T(value);
^
1 error
是我做错了,还是我只是想做一些做不到的事情?
编辑:用法示例:
// I'm trying to simplify this...
protected void func1() {
foobar = new Integer(properties.getProperty("foobar", "210"));
foobaz = new Boolean(properties.getProperty("foobaz", "true"));
}
// ...into this...
protected void func2() {
foobar = getProperty("foobar", 210);
foobaz = getProperty("foobaz", true);
}