2010-02-26 81 views
0

我寫:哈希地圖與<Key,Value>

public interface Map <Key, Value> cells; 

日食抱怨說 「{預期」。

public interface Map <Key, Value> cells{}; 

我然後寫在eclipse以上,並抱怨「語法錯誤令牌‘細胞’,刪除此令牌」。

我該怎麼辦?谷歌不是我的朋友,因爲我找不到代碼片斷來解決這個問題的語法。

+4

在那裏做什麼'interface'關鍵字?什麼試圖實現? – 2010-02-26 18:31:49

+0

如果我不包含'interface',那麼eclipse會抱怨Value和Key「無法解析爲類型」。 – Randle 2010-02-26 18:36:29

+3

這是因爲'Key'和'Value'不是類型。在這種情況下,'Key'是'Map'對象將用於其一組鍵的數據類型的佔位符。類似地,'Value'是它將用於其值集合的數據類型的佔位符。例如,一個有效的組合將是'Map '。 – 2010-02-26 18:38:22

回答

4

您是否試圖聲明名爲cells的成員變量?如果是這樣,要做到這一點是:

public class Foo { 

    // ... 

    public Map<Type1, Type2> cells; 

    // ... 

} 

如果你正在嘗試的方法內聲明變量,這樣做:

public class Foo { 

    // ... 

    public void myMethod() { 
     // ... 

     Map<Type1, Type2> cells; 

     // ... 
    } 

    // ... 
} 

編輯:它看起來像你被迷惑Map <Key, Value>,所以我會試着解釋一下。

KeyMap對象將用於其一組密鑰的數據類型的佔位符。同樣,Value是它將用於其值集合的數據類型的佔位符。例如,有效的組合將是Map <String, Integer>。這意味着Map對象會將一組String對象映射到一組Integer對象。

1

你想做什麼?定義一個新類型或定義一個Map類型的成員?

如果您正在定義一個成員,那麼在它之前不需要接口關鍵字。 如果您正在定義新類型,則只需要接口。

1

你想:

public Map<Key,Value> cells; 

要創建一個名爲Map類型的細胞變化。

public interface Map<Key,Value> cells; 

正在申報(不正確地)稱爲映射的用戶自定義界面 - 也許不是你正在嘗試做的。

4

你大概的意思

public Map<Key, Value> cells; 

interface關鍵字用來定義的接口。 implements用於聲明實現interfaceclass

+0

Dang,它仍然沒有工作。 錯誤:「鍵和值無法解析爲某種類型」。 – Randle 2010-02-26 18:43:48

+2

這是另一個錯誤。鍵和值必須是Java類。一個工作示例是'public Map cells;'。我雖然只是使用Key和Value作爲佔位符。 – 2010-02-26 18:47:28

+0

@Randle:看看William Brendel的評論。您需要用您的實際鍵和值類型替換「鍵」和「值」。 – 2010-02-26 18:48:43