A classe <T> e o método estático Class.forName () me deixam louco

esse código não compila. Estou imaginando o que estou fazendo de errado:

private static Importable getRightInstance(String s) throws Exception {
 Class<Importable> c = Class.forName(s);
 Importable i = c.newInstance();
 return i;
}

onde Importable é uma interface e a string s é o nome de uma classe de implementação. O compilador diz:

./Importer.java:33: incompatible types
found   : java.lang.Class<capture#964 of ?>
required: java.lang.Class<Importable>
  Class<Importable> c = Class.forName(format(s));

Obrigado por qualquer ajuda!

Todas as soluções

Class<? extends Importable> c = Class.forName(s).asSubclass(Importable.class);

e

Class<? extends Importable> c = (Class<? extends Importable>) Class.forName(s);

e

Class<?> c = Class.forName(format(s));
Importable i = (Importable)c.newInstance();

dê este erro (que eu não entendo):

Exception in thread "main" java.lang.IncompatibleClassChangeError: class C1 
has interface Importable as super class

onde C1 está realmente implementando Importable (portanto, é teoricamente convertível em Importable).

questionAnswers(5)

yourAnswerToTheQuestion