2012-02-28 153 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