In Java 1.8 müssen Sie kein Feld als final
definieren, um es von anonymen Klassen zu beziehen.Anonyme Klassen Feldzugriff auf Java 1.8 Kompatibilität mit älteren Versionen
Zum Beispiel auf ältere Versionen:
public void foo(final int bar) {
new Runnable() {
public void run() {
System.out.println(bar);
}
};
}
Aber jetzt, auf Java 1.8, bar
muss nicht endgültig sein:
public void foo(int bar) {
new Runnable() {
public void run() {
System.out.println(bar);
}
};
}
Also, wenn ich mein Projekt zu kompilieren, und Die einzige auf Java 1.8 implementierte Ressource, die ich verwende, ist dies (ich verwende keine Lambdas, neue Klassen usw.), wird mein Code auf Computern mit älteren Java-Versionen ausführbar sein? Wenn nicht, warum?
Sie können diese [Differenz zwischen End- und effektiv final] verpasst (http://stackoverflow.com/questions/20938095/difference-between-final-and-effectively-final) –
'javac' erlaubt Ihnen einfach nicht,' -source 1.8' mit '-target 1.7' zu kombinieren. – Holger
Ich gehe von der Tangente weg, aber ich möchte nicht in 1.8 codieren, ohne explizit meine letzten Argumente oder Variablen als * final * zu deklarieren. Im Gegensatz zu anderen Sprachen, in denen args und vars standardmäßig unveränderlich sind, hat Java, die Sprache, sie standardmäßig immer änderbar gemacht. Nun macht Java 1.8 diese Magie hinter den Kulissen, die die Grenzen dessen, was veränderbar ist und was nicht, verwischt. Schreckliche Idee, wenn es um die Codelesbarkeit geht. –