Objekt einer konkreten Implementierung eines Interfaces durch übergebenen String

  • Themenstarter Themenstarter kdannies
  • Beginndatum Beginndatum
K

kdannies

Gast
Hallo!

Wie bereits der Titel sagt, ich habe ein Interface gebastelt, für dass ich verschiedene mögliche Implementierungen habe. Diese Implementierung möchte ich durch Übergabe eines Strings konkrete implementieren. Zunächst mal der Code:

Java:
package de.ovgu.dke.cet.graph.layout;

import de.ovgu.dke.cet.graph.bisonet.BisoNetGraph;

/**
 * @author kdannies
 * 
 * This class is the FrameWork for gradually reducing the stress of the GraphLayout
 */

class StressMinimization {
	
	private TargetFunction targetFunction;
	private BisoNetGraph graph;

	public StressMinimization(BisoNetGraph graph, String targetFunctionName){
		targetFunction = Class.forName(targetFunctionName);
		this.graph = graph;
	}
	
	public void iterate(){
		
	}
	
	public double getStress(){
		return targetFunction.getStress(this.graph);
	}

}

Bei dem Class.forName meckert er zurecht rum, dass die Variable nicht vom Typ Class ist. Ich kann sie aber leider nicht zum Typ Class machen, da ich innerhalb er Klasse die Funktion
Java:
 getStress
benötige, und diese konkret vom Interface verlangt wird.
Ich würde mich über eine Idee freuen.


Mit freundlichen Grüßen
Kai Dannies
 
Sowas wie
Class c = Class.forName(targetFunctionName);
targetFunction = (TargetFunction)c.newInstance();
sollte aber gehen, unter Beachtung einiger Randbedingungen (no-args-Konstruktor muss existieren und so...)
 
newInstance wr die Lösung.

Danke für die schnelle Hilfe.

Mit freundlichen Grüßen
Kai Dannies
 

Zurück
Oben