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
}
我在Joshua Bloch关于UserGroupsAtGoogle的演讲中看到了这段代码 链接:http://www.youtube.com/watch?v=V1vQf4qyMXg
我想知道这个<T>
在putFavorite
方法的方法声明中意味着什么。
我假设,这不是返回值,因为这已经是void
。
答案 0 :(得分:10)
你是对的,它不是返回值,<T>
声明一个名为T
的泛型类型,然后将在此方法的签名中使用。对于调用该方法的客户端,他们必须确保它们传入的参数满足签名,这样T
在所有参数中都是一致的(并且在某些情况下返回值)。
调用该方法的一些有效方法是:
putFavorite(String.class, "Some string");
putFavorite(Integer.class, Integer.valueOf(1234));
putFavorite(SomeClass.class, new SomeClass());
等。
有关更详细的说明,请参阅this page。
答案 1 :(得分:0)
是一个类型参数,由上面示例中的参数替换。这是一个相关的常见问题:http://www.angelikalanger.com/GenericsFAQ/FAQSections/TypeParameters.html#FAQ001