Java:无法实例化Foo类型

时间:2011-09-06 14:35:16

标签: java android

我正在尝试使用一些实用程序方法创建自己的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> {

2 个答案:

答案 0 :(得分:7)

它不是一个抽象类 - 它现在是一个类型参数,就像String一样!您的类是通用的,有两个类型参数。我相信你的意思是:

public class Foo extends HashMap<String, Parameter> {

现在它是一个非泛型类。

答案 1 :(得分:3)

您的班级声明应为

public class Foo extends HashMap<String, Parameter> {

但扩展HashMap几乎总是一个坏主意。您应该在您的课程中使用 Map实例。此外,方法应始终以Java中的小写字母开头。