Существуют такие методы, которые требуют литералов класса в качестве аргумента.
Collection<EmpInfo> emps =
SomeSqlUtil.select(
EmpInfo.class,
"select * from emps");
или
GWT.create(Razmataz.class);
Проблема возникает, когда мне нужно предоставить общие специфические классы, такие как
EmpInfo<String>
Razmataz<Integer>
Следующий синтаксис будет неправильным
Collection<EmpInfo<String>> emps =
SomeSqlUtil.select(
EmpInfo<String>.class,
"select * from emps");
или
GWT.create(Razmataz<Integer>.class);
Потому что вы не можете использовать синтаксис, такой как
Razmataz<Integer>.class
Итак, как бы я мог выжать буквальный класс из
EmpInfo<String>
Razmataz<Integer>
чтобы я мог использовать их в качестве аргументов для методов, требующих литералов класса?
Дополнительная информация
Хорошо, я признаюсь, что спрашиваю это в первую очередь для GWT.
У меня есть пара GWT RPC интерфейса Разматаз. (FYI, интерфейс GWT RPC должен быть определен в парах сервер-клиент). Я планирую использовать одну и ту же пару интерфейсов для связи, будь то String, Integer, Boolean и т. Д.
GWT.create(Razmataz)
для Razmataz<T>
жалуется, что, поскольку я не указал T, компилятор GWT рассматривал его как Object. Тогда компилятор GWT не будет принимать класс Object. Он должен быть более конкретным, чем объект.
Так что, похоже, я не могу сказать GWT.create, что такое T, потому что литерал Class - это концепция времени выполнения, а generics - это концепция времени компиляции, верно?