Там уже слишком много пост здесь предлагая делать:Создать экземпляр для общего T
class Foo<T>{
Class<T> type;
public Foo(Class<T> type){
this.type = type;
}
// then using newInstance method creating the instance
}
Проблема такого подхода заключается в том, что это не Java, который создает экземпляр, это разработчик, который вынужден pass в конструктор класса Foo
. Итак, скажем, мне нужен конструктор без параметров, является ли Java все еще способным создать экземпляр?
Например, в C# мы получили активаторного типа, которые мы можем использовать так:
Object obj = Activator.CreateInstance<T>();
так, если у меня есть ниже класс в Java, и я не могу следовать за первое решение, что является альтернативой подход, который также аналогичен решению C#:
class Foo<T>(){
public Foo(){
if T is of Type X Then Do Y
}
}
Ваш вопрос подсказывает, что вы уже знаете ответ. Дима прав. Из-за стирания типа в Java невозможно сделать что-либо в зависимости от типа 'T' во время выполнения. Единственный способ обойти это - передать объект класса «» в конструктор, но это несовместимо с наличием конструктора без параметров. Генераторы Java нигде не так сильны, как генераторы C#. Так оно и есть. –
@pbabcdefp: Я думал, что создавать типы во время выполнения на C# тоже невозможно, но пару лет назад я почувствовал, что мне нужно это сделать, и я нашел решение (у меня есть проект на моем сайте), поэтому это означает, что там должен быть способом создания экземпляра T, подобного тому же на Java. Я не могу признать невозможным, как ответ, который я воспринимаю, поскольку мы еще не знаем ответа. – Ricky
Возможный дубликат [Создать экземпляр родового типа в Java?] (Http://stackoverflow.com/questions/75175/create-instance-of-generic-type-in-java) – Radiodef