Создать конструктор для универсального класса, используя отражение - PullRequest
5 голосов
/ 04 декабря 2011

Я хочу создать класс, используя отражение для универсального класса.
Может кто-нибудь сказать мне, как его создать?

У меня есть

public class SomeClass<T>
{
  ....
}

Мне нужно создать класс для SomeClass<T>, используя отражение.

Ответы [ 2 ]

9 голосов
/ 04 декабря 2011

Использование MakeGenericType Метод:

Type myParameterizedSomeClass = typeof(SomeClass<>).MakeGenericType(typeof(MyParameter));
ConstructorInfo constr = myParameterizedSomeClass.GetConstructor(typeof(ConstrParamType1),typeof(ConstrParamType2));
0 голосов
/ 04 декабря 2011

Вам нужно создать экземпляр существующего класса, используя отражение создания нового класса во время выполнения? Если это первое:

Class<?> c = Class.forName("SomeClass");
SomeClass<String> sc =  (SomeClass<String>)c.newInstance();

Если это последнее, проверьте Javassist . Еще не пробовал, но выглядит просто в использовании. Я предполагаю, что вы используете Java.

...