Wenn ich Code ähnlich dem folgenden haben:Garbage Collection, wenn endgültige Variablen in anonymen Klassen
public Constructor(final Object o) {
taskSystem.add(new CycleTask(15, 15, -1) {
@Override
public void execute() throws Throwable {
//access o here every 15 cycles forever
}
});
}
Wann möchten o Müll gesammelt werden, wenn überhaupt? Nur wenn die Aufgabe gesammelt wurde, oder wird sie für immer in Erinnerung bleiben, weil sie endgültig ist?
Das ist nicht sehr gut ausgedrückt. "Lebensraum" sollte "lebenslang" sein. Offensichtlich muss der Aufrufer der Methode eine Referenz haben und die anonyme Klasseninstanz eine andere. Das Schlüsselwort 'final' verbietet jede Änderung an dieser * Variablen * nach der Initialisierung * während der Ausführung der Methode, die den gesamten Gültigkeitsbereich der Methode darstellt. – EJP