Если E
является формальным обобщением текущего класса, да, вы можете сделать это:
List<E> e = new ArrayList<E>();
, но вы не можете сделать это:
E[] e = new E[10];
Но объявив *Переменная 1008 * имеет смысл все равно.
, потому что никто не мешает вам оценить массив со стороны клиента, который знает реальный тип массива:
Foo<E> class{
private E[] array;
Foo(E[] array) {
this.array = array;
}
}
И использовать его как:
Foo<String> foo = new Foo<>(new String[] { "a", "b" });
Или, в качестве альтернативы, вы можете также передать класс массива для создания экземпляров со стороны клиента:
Foo<String> foo = new Foo<>(String.class);
Итак, вы видите, что объявление E[] array
не так беспомощно.