У меня есть метод, который возвращает List
.
Свойство - это тип, имеющий один общий параметр:
public class Property> { ... }
Имея список свойств со смешанным типом, я не могу знать, какой параметр типа имеет конкретный элемент.
Я хотел бы сделать что-то вроде этого:
List> list = getList();
for(Property> crt : list)
{
PropertyWrapper> crtWrapper = new PropertyWrapper(crt.getGenericType());
// I know this doesn't exist ----^
}
Одним предложением: мне нужно, чтобы PropertyWrapper
имел тот же общий аргумент шаблона, что и текущее свойство
. Есть ли какой-нибудь способ сделать это?
Я мог бы применить предложение, как указано в https: // stackoverflow.com / a / 3437930/146003 , но даже если я сделаю это, как создать экземпляр соответствующего PropertyWrapper
тогда, имея только экземпляр Class
?
При необходимости я могу изменить Свойство >
. Я также не возражаю, если нужно использовать отражение (я предполагаю, что это должно быть)
РЕДАКТИРОВАТЬ: Я кое-что забыл. Фактически я не могу создать экземпляр оболочки по строке
PropertyWrapper> crtWrapper = new PropertyWrapper(crt.getGenericType());
, потому что у меня есть специализированные подклассы ( PropertyWrapper_String
).
Теперь я вижу две возможности:
1: Создать экземпляр класса по строке:
String strGenericType = "";
Class> wrapperClass = Class.forName("PropertyWrapper_" + strGenericType);
2: Есть ли способ специализации универсального класса без создания подкласса?
Заранее большое спасибо за ваши советы