Java:无法实例化Foo类型
问题描述:
我试图用一些实用方法创建自己的HashMap
版本。Java:无法实例化Foo类型
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> {
答
它不是一个抽象类 - 这是目前一个类型参数,如String
!你的类是通用的,有两个类型参数。我相信你的意思是:
public class Foo extends HashMap<String, Parameter> {
现在它是一个非泛型类。
答
类声明应该是
public class Foo extends HashMap<String, Parameter> {
但它几乎总是一个坏主意来扩展HashMap
。您应该使用而不是 a Map
实例。此外,方法应始终以Java中的小写字母开头。
“MyType”的类型是什么? – medopal
你可以发布Parameter类的代码吗?至少是构造函数?我想知道为什么在Foo上实例化参数失败。 –
问题解决了。请参阅下面的答案。 – Caner