Hi,
ich lese mich gerade in das Thema der Reflections ein und steige
schon dahinter, dass man mithilfe von Reflections quasi dynamisch zur
Laufzeit bestimmen kann, welche Klasse erzeugt wird oder welche Methoden
ausgeführt werden etc.
Aber ich verstehe den Sinn nicht so ganz:
--> Was bringt mir das? Früher oder später, MUSS ich doch irgendwo festlegen, auf welche
Klasse ich zugreife(egal ob im Quellcode selbst oder in einer Properties Datei). Natürlich ist es schnicke, dass man mit einer Stringveränderung alles relevante über eine beliebige Klasse erfährt,
aber steckt da nicht noch mehr Sinn dahinter oder ist das schon alles?... Weil wenn das alles ist, könnte man auch gleich einfach die API aufschlagen...
Besonders in solchen Fällen...
.. verstehe ich das ganze nicht??? Was bringt es mir, wenn ich anstelle von:
das alles schreiben muss? Also wie wäre da die Wiederverwendbarkeit? Ich meine, nicht jede
Klasse hat eine Methode lentgh() mit leerem Parameter...
Also wofür das ganze???
ich lese mich gerade in das Thema der Reflections ein und steige
schon dahinter, dass man mithilfe von Reflections quasi dynamisch zur
Laufzeit bestimmen kann, welche Klasse erzeugt wird oder welche Methoden
ausgeführt werden etc.
Aber ich verstehe den Sinn nicht so ganz:
Java:
(...)
//Wir sind in der Main Methode
String klassenname = "java.lang.String";
Class cl = Class.forName("klassenname");
System.out.println(cl.getName());
System.out.println();
Method[] methoden = cl.getDeclaredMethods();
for(int i=0; i<methoden.length; i++) {
System.out.println(methoden[i]);
}
//usw.
(...)
--> Was bringt mir das? Früher oder später, MUSS ich doch irgendwo festlegen, auf welche
Klasse ich zugreife(egal ob im Quellcode selbst oder in einer Properties Datei). Natürlich ist es schnicke, dass man mit einer Stringveränderung alles relevante über eine beliebige Klasse erfährt,
aber steckt da nicht noch mehr Sinn dahinter oder ist das schon alles?... Weil wenn das alles ist, könnte man auch gleich einfach die API aufschlagen...
Besonders in solchen Fällen...
Java:
//main
String klasse = "java.lang.String";
Class c = Class.forName(klasse);
Method m = cl.getMethod("length", new Class[0]);
String test = "bla";
System.out.println((int)m.invoke(test, new Object[0]));
.. verstehe ich das ganze nicht??? Was bringt es mir, wenn ich anstelle von:
Java:
System.out.println(new String("bla").length);
Klasse hat eine Methode lentgh() mit leerem Parameter...
Also wofür das ganze???