Прежде всего, второй метод toArray(T[] a)
вместо toArray(Object[] a)
. T
в первом заголовке функции называется параметром типа, что означает, что фактический класс относится к изменениям в зависимости от способа вызова метода. Параметр типа может использоваться методом toArray
для выполнения действий с использованием типа T
, не зная, что такое T
.
В этом примере T
будет String
:
x.toArray(new String[0])
В этом примере T
будет Integer
:
x.toArray(new Integer[0])
В этом примере T
будет MyClass
:
x.toArray(new MyClass[0])
Метод toArray(T[] a)
использует предоставленную информацию о типе для возврата массива заданного типа. Например, первый пример вернет массив типа String
, а второй пример вернет массив типа Integer
.
В результате, вызов toArray()
дает тот же результат (массив Object
) в качестве вызова toArray(new Object[0])
.
Дополнительную информацию о дженериках можно найти на странице this tutorial.
[расширенный Javadoc] (http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html#toArray()) для 'toArray (T [])' объясняет это довольно красиво, по-моему ... – Makoto