Только к вашему сведению, приведенный класс <Callable <Integer >> classCI = (Class <Callable <Integer >>) Callable.class по какой-то причине не работает. В любом случае, поскольку я проверяю Callable <Integer> с помощью рефлексии, не так уж много, просто подумайте, если вы когда-нибудь захотите отредактировать это.
не позвонитьClass.forName()
когда результатом является универсальный тип? Обычно я могу использоватьasSubclass()
, но здесь я вижу единственный способ сделать это - приведение, которое как бы торчит и выдает меня, когда все остальное красиво набрано с помощью дженериков.
Сценарий выглядит примерно так:
Существует .jar с одним основным классом точки входа, который имеетmain()
, Требуется опция имени класса (и некоторых других, не относящихся к делу). Данный класс реализуетCallable<Integer>
, Этот класс загружен, инициирован и запущен.
Вот пример того, что мне нужно:
Class<? extends Callable<Integer>> clazz = (Class<? extends Callable<Integer>>) Class.forName(options.valueOf(className)).asSubclass(Callable.class);
Есть ли способ избавиться от этого броска?
Использование SE6.