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
    }

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.

2 Answers 2

10

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.

Sign up to request clarification or add additional context in comments.

Comments

0

is a type parameter which is replaced by the argument like in the example above. Here is a related faq : http://www.angelikalanger.com/GenericsFAQ/FAQSections/TypeParameters.html#FAQ001

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.