Почему нельзя создать экземпляр?

Рейтинг: 0Ответов: 2Опубликовано: 22.04.2011
public class Entity<E> {
    public void Action() {

        // Вот тут возникает ошибка
        E entity = new E();
    }
}

Ответы

▲ 4Принят

Потому что заранее неизвестно с каким классом (Е) будет работать твой класс. Соответственно неизвестно есть ли у класса Е public конструкторы.

▲ 2

@Vadim прав, но если вам очень хочется тогда можно сделать так:

abstract class Entity<E>
{
   public void Action ()
   {
      final E entity = createEntity ();
   }

   protected abstract E createEntity ();
}