Java generic неизвестного типа
снова непонятки с генериками
Имеется некий интерфейс.
Он будет генерировать строку, причем генерация очень сильно зависит от его параметра T, также он будет предоставлять класс своего генерика
public interface SomeStringGenerator<T> {
public String generate(T param);
public Class<T> getTypeClass();
}
У него есть несколько различных реализаций, возможно будет больше, в общем обобщить T здесь совершенно невозможно.
Теперь есть какой-то класс, который будет работать с этим генератором, допустим будет составлять динамическую красивую страничку текста для пользователя. (Возможно пример не очень применяется на практике, но это только пример)
public class SomePageConsumer {
private final Collection<SomeStringGenerator<?>> generators;
private final SomeClass someObject;
public String generateFormattedPage() {
for (SomeStringGenerator<?> generator : generators) {
if (someObject.getClass().isAssignableFrom(generator.getDataClass())){
generator.generate(generator.getTypeClass().cast(someObject)); //compile error
}
}
}
}
Собственно код позволяет предоставить все необходимые объекты для генераторов, но вот генераторы не хотят их принимать.
Не очень понимаю почему компилятор ругается, ведь используется явное преобразование обьектов к требуемому типу.