我正在尝试使用一些实用程序方法创建自己的HashMap
版本。
Foo.java :
import java.util.HashMap;
public class Foo<String, Parameter> extends HashMap<String, Parameter> {
public Foo() {
super();
}
public Parameter Add(String key, MyType type) {
return put(key, new Parameter(type)); // -> This line causes compilation error
}
}
以下一行:
new Parameter(type);
生成Cannot instantiate the type Foo
。
我检查了 Parameter
类,它不是一个抽象类/接口,为什么我会收到此错误?
修改
更改类声明如下解决了问题:
public class Foo extends HashMap<String, Parameter> {
答案 0 :(得分:7)
它不是一个抽象类 - 它现在是一个类型参数,就像String
一样!您的类是通用的,有两个类型参数。我相信你的意思是:
public class Foo extends HashMap<String, Parameter> {
现在它是一个非泛型类。
答案 1 :(得分:3)
您的班级声明应为
public class Foo extends HashMap<String, Parameter> {
但扩展HashMap
几乎总是一个坏主意。您应该在您的课程中使用 Map
实例。此外,方法应始终以Java中的小写字母开头。