Referenzen und Konstanten in Java [] (Referenzen und Konstanten in Java), Lektion, Seite 723527
https://www.purl.org/stefan_ram/pub/referenzkonstanten_java (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Java-Kurs

Referenzen und Konstanten in Java

Referenzeffekt: final

final verhindert nicht die Veränderung des Objekts (und seiner Felder), sondern nur, daß der Referenzvariablen o ein neuer Wert (mit »o = …«) zugewiesen wird!

Main.java
public class Main

{ public static void main( final java.lang.String[] args )

  { final java.awt.geom.Point2D.Double o

    = new java.awt.geom.Point2D.Double();

    o.y = 12;

    /* was dank "final" hier nicht geht ist: o = ... */

    java.lang.System.out.println( o.toString() ); 
java.lang.System.out.println( o ); o.y = 17; /* was dank "final" hier nicht geht ist: o = ... */ java.lang.System.out.println( o.toString() );
java.lang.System.out.println( o ); }}
transcript
Point2D.Double[0.0, 12.0]
Point2D.Double[0.0, 12.0]
Point2D.Double[0.0, 17.0]
Point2D.Double[0.0, 17.0]

Referenzeffekt: final bei Referenzvariablen

Man beachte, daß oben eine final-Variable in gewissem Sinne verändert wird!

Die Deklaration einer Konstante  für ein veränderliches Objekt ist nur scheinbar  ein Widerspruch, denn das Schlüsselwort "final" in der Deklaration drückt aus, daß der Bezeichner "o" sich immer auf das gleiche Objekt  bezieht. Die Variable "o" ist also konstant, sie enthält immer die gleiche Referenz —aber das von dieser Referenz referenzierte Objekt selber ist veränderlich.

final java.awt.geom.Point2D.Double o = new java.awt.geom.Point2D.Double(); o.y = 12;
                           _____ 
.-' '-. 
.' '. 
o / \ .-----------------------. 
.-. konstante ; java.awt.geom. ; variabler | x | 0,00000000000000 | 
|#---------------->| Point2D.Double- |--------------->|-----------------------| 
'-' Referenz ; Objekt ; Inhalt | y | 12,0000000000000 | 
\ / '-----------------------' 
'. .' 
'-._____.-'

final java.awt.geom.Point2D.Double o = new java.awt.geom.Point2D.Double(); o.y = 12; o.y=17;
                           _____ 
.-' '-. 
.' '. 
o / \ .-----------------------. 
.-. konstante ; java.awt.geom. ; variabler | x | 0,00000000000000 | 
|#---------------->| Point2D.Double- |--------------->|-----------------------| 
'-' Referenz ; Objekt ; Inhalt | y | 17,0000000000000 | 
\ / '-----------------------' 
'. .' 
'-._____.-'

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723527 stefan_ram:723527 Referenzen und Konstanten in Java Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723527, slrprddef723527, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/referenzkonstanten_java