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?
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?
<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);
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.
The <T>
is the Type of the parameter you're passing into that generic method.
It is generic parameter. If you write then
string s = ...;
clone(s); // will be expanded to string clone(string x)