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
}
I saw this code in a talk from Joshua Bloch on UserGroupsAtGoogle
link: http://www.youtube.com/watch?v=V1vQf4qyMXg
I wonder what this <T> means in the method declaration of the putFavorite method.
I assume, this is not the return value, because this is already void.
You're right, it's not the return value, the <T> is declaring a generic type named T which will then be used in the signature of this method. For a client calling the method, they have to make sure the arguments they pass in satisfy the signature, such that T is consistent across all arguments (and return value in some cases).
Some valid ways to call the method would be:
putFavorite(String.class, "Some string");
putFavorite(Integer.class, Integer.valueOf(1234));
putFavorite(SomeClass.class, new SomeClass());
etc..
See this page for a more detailed explanation.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With