views:

75

answers:

4

In the above declaration, what is the <T> for?

I would like to know the difference between having <T> and not having it? How does it affect the code?

A: 
GaryF
+1  A: 

it just means that you will get the same class out of that method that you're putting in, to save it being Object and you having to cast all the time.

oedo
+3  A: 

<T> here indicates the type is implied from the arguments. So:

public static <T> List<T> createList(T... args) {
  List<T> ret = new ArrayList<T>(Arrays.asList(args));
}

can be used:

List<String> list = createList("one", "two", "three");

or

List<Integer> list2 = createList(1, 2, 3);
cletus
A: 

It is generic parameter. If you write then

string s = ...;
clone(s); // will be expanded to string clone(string x)
Andrey