Basis verwenden Wenn Sie eine Liste von Klassennamen in einer Liste haben wieWie viele Objekte in Java auf Klassennamen in einem Array
List<String> runnables = null;
runnables.add("runnable1");
runnables.add("runnable2");
runnables.add("runnable3");
Jede der Klassen implementiert Runnable
Also für Beispiel funktioniert dies
Thread t1 = new Thread(new runnable1());
t1.start();
was aber, wenn Sie durch eine Schleife wollen und alle von ihnen aus dem Array laufen und das Array wird zur Laufzeit dynamisch aufgebaut. Sie wissen zum Zeitpunkt des Codierens nicht, welche Klassennamen in der Liste stehen, da sie sich ändern können.
runnables.forEach((String classname) -> {
System.out.println("The runnable is " + (String) classname);
Thread t1 = new Thread(new classname());
t1.start();
});
Geht nicht, sagt es " nicht Symbol Symbol finden können: class classname Lage: Klasse ConncurrencyTesting " Auf der Zeile, die beginnt "Thread t1 = ...." in der forEach .
Thread t1 = new Thread(new classname());
Mit dieser Linie, die Reflexion verwendet eine Instanz aus dem Klassennamen zu generieren:
Für die Aufzeichnung: * Reflection * ist irgendwie ein komplettes "Thema "für sich selbst. Wenn Sie wirklich nichts darüber wissen, sehe ich eine gewisse Chance, dass Sie sich überbelasten. – GhostCat