2011-09-06 118 views
1

我試圖用一些實用方法創建自己的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> { 
+0

「MyType」的類型是什麼? – medopal

+0

你可以發佈Parameter類的代碼嗎?至少是構造函數?我想知道爲什麼在Foo上實例化參數失敗。 –

+0

問題解決了。請參閱下面的答案。 – Caner

回答

7

它不是一個抽象類 - 這是目前一個類型參數,如String!你的類是通用的,有兩個類型參數。我相信你的意思是:

public class Foo extends HashMap<String, Parameter> { 

現在它是一個非泛型類。

3

類聲明應該是

public class Foo extends HashMap<String, Parameter> { 

但它幾乎總是一個壞主意來擴展HashMap。您應該使用而不是 a Map實例。此外,方法應始終以Java中的小寫字母開頭。