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