2014-05-10 7 views
15

Vor Java 8 konnten wir nicht-finale Variablen innerhalb der lokalen Klasse verwenden. Aber jetzt erlauben sie sowohl finale als auch effektive finale (wer Werte nicht geändert hat), kann von lokalen Klassen verwiesen werden. Was ich weiß (Korrigiere mich, wenn ich falsch liege), sie unterstützten nicht die Bezugnahme auf nicht endgültige Werte, weil dort Werte geändert werden können. Also, wie unterstützen sie es jetzt und warum wurde es nicht früher unterstützt.Lokale Klasse kann auf nicht-finale Variable in Java zugreifen 8

Antwort

25

Die Situation hat sich überhaupt nicht verändert. Der Compiler ist nur ein bisschen schlauer und zwingt Sie nicht mehr, das endgültige Keyword zu verwenden.

Wenn es erkennt, dass die Variable effektiv ist final, d. H. Nur einmal zugewiesen, und nie danach ist alles gut. Wenn es erkennt, dass es nicht effektiv endgültig ist, weigert es sich zu kompilieren.

Also, anstatt Sie zwingen, eine Variable final zu machen, erkennt es automatisch. Aber Sie können immer noch nicht effektive Endvariablen in einer inneren Klasse oder einem Lambda verwenden.