Типичная загрузка класса forName

Как мне вызвать Class.forName () , когда результатом является универсальный тип? Обычно я могу использовать asSubclass () , но здесь единственный способ, который я вижу для этого, - это приведение, которое как бы выделяется и вызывает у меня недоумение, когда все остальное хорошо напечатано с помощью дженериков.

Сценарий следующий. что-то вроде этого:

Существует .jar с одним основным классом точки входа, который имеет main () . Требуется вариант имени класса (и некоторые другие, не относящиеся к делу). Данный класс реализует Callable . Этот класс загружен, инициализирован и запущен.

Вот пример того, что мне нужно:

Class<? extends Callable<Integer>> clazz = (Class<? extends Callable<Integer>>) Class.forName(options.valueOf(className)).asSubclass(Callable.class);

Есть ли способ избавиться от этого приведения?

Используя SE6.

8
задан TC1 3 June 2011 в 07:49
поделиться