这是我的代码:
public class Configuration <T extends Map<K,V>, K, V> {
public Map<K, V> fields;
public Configuration() {
this.fields = new T<K, V>(); // --> error: Type 'T' does not have type parameters
}
}
为什么我不能用通用参数定义通用对象?
答案 0 :(得分:4)
由于Java中设计了泛型(通用信息仅在编译时使用),因此new T()
T
是一个类型参数。{/ p>
一种可能的替代方法是做这样的事情:
public interface ConfigurationMapFactory<K, V> {
public Map<K, V> createMap();
}
public class Configuration <K, V> {
public Map<K, V> fields;
public Configuration(ConfigurationMapFactory<K, V> mapFactory) {
this.fields = mapFactory.createMap();
}
}
虽然在这种情况下你可以轻松地做到这一点 - 这是否有理由不起作用?
public class Configuration <K, V> {
public Map<K, V> fields;
public Configuration(Map<K, V> fields) {
this.fields = fields;
}
}