Aufrufe statischer Methoden über einen Ausdruck in Java
In der objektorientierten Programmierung werden Ausdrücke als Kontexte verwendet. Dieser Abschnitt zeigt ein erstes Beispiel eines als Kontext verwendeten Ausdrucks.
Aufrufe statischer Methoden eines Referenztyps sind auch erlaubt, wenn ein Ausdruck jenen Typs als Kontext verwendet wird.
Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println( java.lang.String.valueOf( 3 )+ 1 );
java.lang.System.out.println( "8".valueOf( 3 )+ 1 );
java.lang.System.out.println( "7".valueOf( 3 )+ 1 );
java.lang.System.out.println( "".valueOf( 3 )+ 1 ); }}Protokoll
31
31
31
31
Wir haben schon im Grundkurs die Schreibweise mit einem Verbaufruf nach einem Punkt ».« verwendet. Dabei standen Referenztypnamen vor dem Punkt, welche entsprechende Methoden enthalten.
Nun haben wir gesehen, daß wir einen Punkt ».« auch hinter einen Ausdruck schreiben können.
Wir stellen uns dabei vor, daß der Ausdruck vor dem Punkt nun die Methoden enthält, die wir mit einem Verbaufruf hinter dem Punkt ».« aufrufen können. Der Verbaufruf »valueOf( 3 )« hat die Signatur »valueOf( int )«, und der Ausdruck »""« enthält eine Methode »valueOf( int )«, welche wir mit »valueOf( 3 )« aufrufen.
Der Ausdruck »""« enthält alle Methoden seines Typs »java.lang.String«, so beispielsweise auch die statische Methode »valueOf( int )«, die wir oben aufgerufen haben.
Ein Ausdruck kann Methoden enthalten.
Wir nennen eine in einem Ausdruck enthaltene Methode auch eine Methode dieses Ausdrucks.
Eine Methode eines Ausdrucks kann aufgerufen werden, indem man einen Punkt und einen Verbaufruf hinter den Ausdruck schreibt.
Welche Methoden ein Ausdruck enthält, wird durch den Typ des Ausdrucks festgelegt.
- Syntaktischer Aufbau des Aufrufs »"".valueOf( 3 )« ::=
Ausdruck
.----------. .-. .------------.
--->| Ausdruck |--->( . )--->| Verbaufruf |--->
'----------' '-' '------------'Ausdruck
.--.
--->( "" )--->
'--'Verbaufruf
.-------. .-. .-. .-.
--->( valueOf )--->( ( )--->( 3 )--->( ) )--->
'-------' '-' '-' '-'
In diesem Abschnitt haben wir mit »"".valueOf( 3 )« eine statische Methode des Typs »java.lang.String« aufgerufen.
Übungsfragen
? Bestandteile von Aufrufen
Ist »java.lang.Math.random()« ein Verbaufruf?
Welchen Verbaufruf enthält der Aufruf »java.lang.Math.random()«?
Welchen Kontext enthält der Aufruf »java.lang.Math.random()«?
? Typ
Welchen Typ haben die folgenden Ausdrücke?
- »2«
- »"abc"«
? Ausgabe
Ist »java.lang.System.setProperty( "user.country", "US" )« eine Anweisung oder ein Ausdruck?