2012-02-28 152 views
3
private Map<Class<?>, Object> favorites = new HashMap<Class<?>, Object>(); 

    public <T> void putFavorite(Class<T> type, T instance) { 
     //code to put the T Object in the Map 
    } 

在我看到這個代碼從約書亞布洛赫講座上UserGroupsAtGoogle
鏈接:http://www.youtube.com/watch?v=V1vQf4qyMXgJava泛型方法聲明

我不知道這是什麼意思<T>putFavorite方法的方法聲明。
我假設,這不是返回值,因爲這已經是void

回答

10

你是對的,它不是返回值,<T>是聲明一個名爲T的泛型,然後將用於此方法的簽名。對於調用該方法的客戶端,他們必須確保他們傳遞的參數滿足簽名,以便T在所有參數(以及某些情況下的返回值)中保持一致。

一些有效的方法來調用方法是:

putFavorite(String.class, "Some string"); 
putFavorite(Integer.class, Integer.valueOf(1234)); 
putFavorite(SomeClass.class, new SomeClass()); 

等。

進行更詳細的說明,請參見this page

+0

不錯的一個。 thx的鏈接以及! – 2012-02-28 20:12:10