Alle Beispiele, die ich mir für Reflection ansehe, zeigen das Erstellen einer neuen Instanz einer unbekannten Implementierung und das Casting dieser Implementierung auf ihre Schnittstelle. Das Problem dabei ist, dass Sie jetzt keine neuen Methoden (nur Überschreibungen) der implementierenden Klasse aufrufen können, da Ihre Objektreferenzvariable den Schnittstellentyp hat. Hier ist, was ich habe:
Class c = null;
try {
c = Class.forName("com.path.to.ImplementationType");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
InterfaceType interfaceType = null;
try {
interfaceType = (InterfaceType)c.newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
Wenn ich nur einen Verweis auf "com.path.to.ImplementationType" habe und ich nicht weiß, was dieser Typ sein könnte (er kommt aus einer Konfigurationsdatei), wie kann ich dann den Klassennamen verwenden, um ihn in ImplementationType zu übertragen? Ist dies überhaupt möglich?