Zur Dokumentation nicht-statischer Methoden in Java
Das Nummernzeichen »#« in Angaben nicht-statischer Einträge
Zur Angabe eines nicht-statischen Eintrags eines Typs verwenden wir manchmal auch ein Nummerzeichen »#« zwischen dem Referenztypnamen, zu dem der Eintrag gehört, und einer Signatur des Eintrags.
»java.io.PrintStream#println()« bedeutet: „Die nicht-statische Methode »println()« des Typs »java.io.PrintStream«“.
- Dokumentation der Methode »println()« (gekürzt, überarbeitet und übersetzt)
java.io.PrintStream#println()
void println()
Gibt ein Zeilenende aus.
Diese Schreibweise kann aber nicht im Quelltext verwendet werden. Sie könnte beispielsweise in einem Brief verwendet werden, den ein Mensch an einen Menschen schreibt.
Manchmal wird auch »java.io.PrintStream.println()« für die nicht-statische Methode »println()« des Typs »java.io.PrintStream« geschrieben. Dies könnte aber dazu führen, daß dies als eine statische Methode mißverstanden wird.
Das Verhalten nicht-statischer Methoden
An dem schon früher zu den Eigenschaften von Aufrufen Gesagten ändert sich nichts: Auch bei nicht-statischen Methoden kann man weiterhin zwischen Wertmethoden, Wirkmethoden und Wertwirkmethoden unterscheiden.
Verweise in der Dokumentation
Einige Methoden sind in der Dokumentation eines Referenztyps nicht ausführlich dokumentiert, sondern nur kurz mit ihrem Namen eingetragen.
In der Dokumentation des Referenztyps »java.io.PrintStream« trifft dies beispielsweise auf die Methode »write« oder die Methode »clone« zu.
- Ausschnitt aus der Dokumentation des Referenztyps »java.io.PrintStream«
Methods inherited from class java.io.FilterOutputStream
writeMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Hinter den Namen dieser Methoden stecken dann Verbindungen zu den Stellen, an denen diese Methoden ausführliche dokumentiert sind.
Auch, wenn solche Methoden nur mit ihrem Namen aufgeführt werden, gehören sie genauso zu dem Referenztyp, auf dessen Seite sie aufgeführt sind, wie die anderen ausführlicher dokumentierten Methoden.
default-Methoden ⃗
Einige Methoden sind in der Dokumentation eines Referenztyps mit dem Wort »default« gekennzeichnet. Diese Methoden gehören ebenfalls zum Referenztyp. Wir können das Wort »default« vorerst ignorieren.
Ein Beispiel für solch eine default-Methode ist beispielsweise die Methode »chars()« des Referenztyps »java.lang.CharSequence«.
Übungsfragen
? Erlaubte Aufrufe
Welche der folgenden Verbaufrufe sind nach dem Kontext »java.lang.System.in« erlaubt?
- »open()«
- »close()«
- »hashCode()«
- Aussprachehinweis
- close cloz
? Fehlermeldung
Woran könnte es liegen, wenn die folgende Anweisung in einem Java -Programm zu einer Fehlermeldung führt?
Warum ist der Aufruf möglicherweise falsch?
- »{ java.io.PrintStream.println(); }«
? Erlaubte Aufrufe
Die Antwort auf die folgende Frage soll gefunden werden, ohne zu versuchen, das Programm mit einem Compiler zu übersetzen.
Der Typ eines Parameternamens als Ausdruck ist stets so, wie dies durch die Deklaration des Parameternamens festgelegt wurde. Der Typ des Ausdrucks »s« im Rumpfe der Methode »method« des folgenden Programms ist also »java.lang.String«, weil dies durch die Parameterdeklaration mit »final java.lang.String s« festgelegt wurde.
Kann das folgende Programm ohne Fehlermeldung übersetzt werden (es geht um den Aufruf »s.length()«)?
Main.java
public final class Main
{public static void method( final java.lang.String s )
{ s.length(); }public static void main( final java.lang.String[] args )
{ java.lang.System.out.println( "main" ); }}
? Erlaubte Aufrufe (1)
Die Antwort auf die folgende Frage soll gefunden werden, ohne zu versuchen, das Programm mit einem Compiler zu übersetzen.
Kann das folgende Programm ohne Fehlermeldung übersetzt werden (es geht um den Aufruf »s.getAverage()«)?
Main.java
public final class Main
{public static void method( final java.lang.String s )
{ s.getAverage(); }public static void main( final java.lang.String[] args )
{ java.lang.System.out.println( "main (1)" ); }}- Aussprachehinweise
- average ˈæv rɪʤ
? Erlaubte Aufrufe (2) ⃗
Die Antwort auf die folgende Frage soll gefunden werden, ohne zu versuchen, das Programm mit einem Compiler zu übersetzen.
Kann das folgende Programm ohne Fehlermeldung übersetzt werden (es geht um den Aufruf »statistics.length()«)?
Main.java
public final class Main
{
public static void method( final java.util.IntSummaryStatistics statistics )
{ statistics.length(); }
public static void main( final java.lang.String[] args )
{ java.lang.System.out.println( "main (2)" ); }}
? Erlaubte Aufrufe (3) ⃗
Die Antwort auf die folgende Frage soll gefunden werden, ohne zu versuchen, das Programm mit einem Compiler zu übersetzen.
Kann das folgende Programm ohne Fehlermeldung übersetzt werden (es geht um den Aufruf »statistics.getAverage()«)?
Main.java
public final class Main
{
public static void method( final java.util.IntSummaryStatistics statistics )
{ statistics.getAverage(); }
public static void main( final java.lang.String[] args )
{ java.lang.System.out.println( "main (3)" ); }}
? Erlaubte Aufrufe (4) ⃗
Die Antwort auf die folgende Frage soll gefunden werden, ohne zu versuchen, das Programm mit einem Compiler zu übersetzen.
Kann das folgende Programm ohne Fehlermeldung übersetzt werden (es geht um den Aufruf »sequence.length()«)?
Main.java
public final class Main
{
public static void method( final java.lang.CharSequence sequence )
{ sequence.length(); }
public static void main( final java.lang.String[] args )
{ java.lang.System.out.println( "main (4)" ); }}
? Dokumentation erklären *
Warum steht die Dokumentation der Methode »println()« im Typ »java.io.PrintStream«, wenn man nicht »java.io.PrintStream.println()« schreiben kann?