Следующий код делает именно то, что я хочу, но мне любопытно, есть ли лучший способ сделать это. Это было бы намного проще, если бы интерфейсы допускали статические методы или если бы методы Java могли быть обобщены / параметризованы настолько, насколько это возможно в C #.
Я бы лучше заменил параметр "Class<TParsedClass> c
" на "Class<AbstractClass> c
". Для меня "Class<AbstractClass>
" означает класс, который расширяет определенный абстрактный класс, но, очевидно, это неправильно, потому что когда я использую этот параметр и использую его, как я описал выше, я получаю ошибки компилятора.
public <TData, TParsedClass> TParsedClass convert(TData data, Class<TParsedClass> c)
{
try
{
return (TParsedClass)c.getMethod("parse", data.getClass()).invoke(c, data);
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
}