Шаблоны Java: массив типа шаблона в шаблоне - PullRequest
1 голос
/ 02 декабря 2009

Я хотел бы реализовать шаблон, который содержит массив типа шаблона. Есть ли способ сделать что-то похожее на то, что я описал в моем примере кода? Проблема в строке, где this.foo назначается новый массив типа шаблона.

class Classname<T>
{
  T[] foo
  Classname()
  {
    this.foo=new T[128];
  }
}

Ответы [ 2 ]

3 голосов
/ 02 декабря 2009

Это не работает, и вот хороший ответ , который объясняет почему. Но, по сути, Arraylist - хорошая замена, потому что он в основном оборачивает массив в объект списка.

Редактировать

Этот вопрос еще ближе к вашей проблеме

0 голосов
/ 19 февраля 2015

Это должно работать:

import java.lang.reflect.Array;
class Classname<T> {
  T[] foo;
  public Classname(Class<T> klass, int size) {
    this.foo = (T[]) Array.newInstance(klass, size);
  }
}

тогда вы сможете использовать его следующим образом:

Classname<Double> c = new Classname<>(Double.class, 5);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...