方法声明中的Java泛型

Jan*_*ter 3 java generics

   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
    }
Run Code Online (Sandbox Code Playgroud)

我在Joshua Bloch的UserGroupsAtGoogle
链接上看到了这段代码:http://www.youtube.com/watch?v = V1vQf4qyMXg

我想知道这<T>在方法的方法声明中意味着什么putFavorite.
我假设,这不是返回值,因为这已经是void.

ggr*_*ner 10

你是对的,它不是返回值,<T>是声明一个名为的泛型类型T,然后将在此方法的签名中使用.对于调用该方法的客户端,他们必须确保它们传入的参数满足签名,这样T在所有参数中都是一致的(并且在某些情况下返回值).

调用该方法的一些有效方法是:

putFavorite(String.class, "Some string");
putFavorite(Integer.class, Integer.valueOf(1234));
putFavorite(SomeClass.class, new SomeClass());
Run Code Online (Sandbox Code Playgroud)

等等..

有关更详细的说明,请参阅此页面.