Java Doc mehrere Return Parameter

MiMa

Top Contributor
Ich habe in der Methode in der ich ein String Datum verarbeite und ein Array zurück gebe.
Ich würde aber gerne in der Java Doc auch alle Parameter mit einbringen die im Array Zurück gegeben werden.

Aktuell sieht die Dokumentation in IntelliJ wie folgt aus
Code:
Ermittelt das Datum, die Uhrzeit und prüft es auf Echtheit.
Params:     datum – : String (dd.mm.yyyy, dd.mm.yyyy hh:mm:ss:SS)
Returns: datumArray : String[]

Ich würde das aber gerne so haben wollen
Code:
/**
     * Ermittelt das Datum, die Uhrzeit und prüft es auf Echtheit.<br>
     *
     * @param datum : <b>String</b> (dd.mm.yyyy, dd.mm.yyyy hh:mm:ss:SS)
     * @return datumArray : <b>String[]</b>
     * @return datumArray [0] Datum (dd.MM.yyyy, ungültig)
     * @return datumArray [1] Uhrzeit (HH:mm:ss)
     * @return datumArray [2] DatumUhrzeit (dd.MM.yyy HH:mm:ss)
     * @return datumArray [3] Tag (dd)
     * @return datumArray [4] Monat (MM)
     * @return datumArray [5] Jahr (yyyy)
     * @return datumArray [6] Stunde (HH)
     * @return datumArray [7] Minute (mm)
     * @return datumArray [8] Sekunde (ss)
     * @return datumArray [9] Millisekunden (1365407280000)
     */

Wäre das möglich?

Danke
 

Robert Zenz

Top Contributor
Nein, es ist auch nicht ratsam wie du es machst, absolut nicht. Du transportierst hier sehr viel zusammenhaengende Information ohne diese "richtig" zu strukturieren. Du solltest all das in eine Klasse zusammenfassen und diese retournieren, dann eruebrigen sich jeglichen Fragen zum Wert welcher zurueck geliefert wird.

Nehmen wir mal deine jetzige Implementierung fuer ein Beispiel:

Java:
String[] datumArray = datumZerlegen(datum);

System.out.println("Heute ist der " + datumArray[4] + ". Tag.");

Schnell, ohne oben hinzusehen, ist der Code richtig?

Jetzt koennte man natuerlich sagen "Ja, aber ich mache dafuer Konstanten":

Java:
public final int DATUM_INDEX = 0;
public final int UHRZEIT_INDEX = 1;
public final int DATUM_UHRZEIT_INDEX = 2;
public final int TAG_INDEX = 2;
public final int MONAT_INDEX = 3;
public final int JAHR_INDEX = 4;
public final int STUNDE_INDEX = 5;
public final int MINUTE_INDEX = 6;
public final int SEKUNDE_INDEX = 7;

String[] datumArray = datumZerlegen(datum);

System.out.println("Heute ist der " + datumArray[TAG_INDEX] + ". Tag.");

Schnell, ohne oben hinzusehen, ist der Code richtig?

Mach' "einfach" eine Klasse daraus, dann hast du all diese Probleme nicht:

Java:
Datum zerlegtesDatum = datumZerlegen(datum);

System.out.println("Heute ist der " + zerlegtesDatum.getTag() + ". Tag.");
 

MiMa

Top Contributor
Dies ist so zu sagen eine Grundmethode 'sucheFormate(String datum) : String[]'
in der Klasse Datum 'sucheFormate' oder ausserhab der Klasse 'Datum.sucheFormate(....)'
was bei meinen Grundmethoden in der Regel nicht vorkommt.

Ich nutze diese Grundmethode um Anwendungmethoden zu erstellen die ich
dann bei der Programmierung verwende wie diese kleinen.

Java:
/**
     * Ermittelt das Jahr aus einem Datum.<br>
     *
     * @param datum : <b>String</b>(dd.mm.yyyy)
     * @return jahr : <b>String</b> (yyyy)
     */
    // sucheJahr(String datum) : String pFunk
    public static String sucheJahr(String datum) {
        String[] datumArray = sucheFormate(datum);
        String jahr = datumArray[5];
        LOG.info("Das gefundene und geprüfte Jahr ist : " + jahr);
        return jahr;
    } // sucheJahr

Java:
/**
     * Prüft ein Datum auch Echtheit.<br>
     *
     * @param datum <b>String</b> (dd.mm.yyyy)
     * @return datum <b>String</b> (dd.mm.yyyy)
     */
    public static String pruefen(String datum) {
        String[] datumArray = new String[9];
        datumArray = sucheFormate(datum);
        datum = datumArray[0];
        LOG.info("Das geprüfte Datum ist : " + datum);
        return datum;
    } // pruefen

Das habe ich mir deshalb so überlegt, da ich sonst ziemlich viel doppelten Code
in meinen Methoden hätte.
 
Zuletzt bearbeitet:

LimDul

Top Contributor
Wenn du das so umbaust, wie @Robert Zenz vorschlägt, hast du ja auch keinen doppelten Code.

Anstelle von
Java:
datumArray = sucheFormate(datum);
datum = datumArray[0];

Hast du dann
Java:
ZerlegtesDatum datumZerlegt = sucheFormate(datum);
datum = datumZerlegt.getDatum();

Und ist deutlich lesbarer verständlicher, als warum da eine 0 steht oder im anderen Code eine 5.

Grundsätzlich sollte gemäß Clean Code der Anspruch an alle Funktionen sein:
* Sie sind ohne Kommentar verständlich.

Jeder Kommentar den man schreibt, ist in Clean Code ein Eingeständnis, dass man es nicht geschafft hat verständlichen, lesbaren Code zu schreiben. (Gibt natürlich Ausnahmen - APIs die Dritten bereitgestellt werden, sollte man z.B. dokumentieren).
 

Robert Zenz

Top Contributor
Ja schau mal, wenn du eine Klasse verwenden wuerdest braeuchstest du diese Hilfsmethoden doch gar nicht mehr.

Java:
int jahr = datumZerlegen(datum).getJahr();

Also klar kannst du deine datumZerlegen behalten (aber wenn die auch Pruefungen macht waere sowas wie "validiereUndZerlege" besser), aber diese sollte eben deine Werte in einer Klasse zurueck liefern.

Java:
public class Datum {
    public int getJahr();
    public int getTag();
    public int getMonat();
    public int getStunde();
   // ...
}
 

Robert Zenz

Top Contributor
Jeder Kommentar den man schreibt, ist in Clean Code ein Eingeständnis, dass man es nicht geschafft hat verständlichen, lesbaren Code zu schreiben. (Gibt natürlich Ausnahmen - APIs die Dritten bereitgestellt werden, sollte man z.B. dokumentieren).
Erstens, japp. Zweitens, die APIs Dritter kann man auch im eigenen Projekt wrappen und damit wegkapseln, was ich sehr gerne mache weil man damit dann einfach nur mit der eigenen API arbeitet und auch unabhaengiger ist wenn der Dritte etwas aendert. Das minimiert dann auch Verstaendnisprobleme im eigenen Code.
 

MiMa

Top Contributor
Ja ihr habt recht, eine eigene Klasse zu machen würde sicher einiges leichter machen.
Meine Methode sucheFormate() war im Grunde eine einfache Methode mit einem Rückgabewert und hieß auch mal anders.
Sie ist nach und nach angestiegen und bei zwei oder drei Rückgabewerte wollte ich den Aufwand einer eigenen Klasse
für das finden von Datumsformate nicht machen.
Allerdings ist der Funktionsumfang deutlich angestiegen und die Methode ist auch sehr umfangreich geworden.

Ich bin kein Profi Programmierer und lerne quasi immer noch, da ich leider hin und wieder pausen einräumen muss.
Da ich gerne Programmiere und das als Hobby für den eigenen Bedarf mache, kann ich nicht Tag für Tag Programmieren
was ich allerdings gerne tun würde und mir so viel Zeit nehme wie ich kann.
Ich konnte wegen Corona Infektion und Schlaganfall ein Jahr nicht Programmieren, was ich jetzt langsam wieder angehe.

Ich weis noch wie es geht und leider fallen mir einige Dinge nicht mehr ein, die ich dann auch leider wieder nachholen.
Auch versuche ich alles mit Struktur und übersichtlich zu gestalten.
Demnach habe ich eine Klasse mit den Namen Datum in der ich alle Methoden gepackt habe die zur Verarbeitung
von Datums notwendig sind. Ich ergänze die Klasse Datum dann mit Variablen, Get -und Set-Methoden.

Ich bin wirklich froh das hier im Forum so freundliche Menschen sind die einen gerne weiterhelfen.
 
Zuletzt bearbeitet:

Neumi5694

Top Contributor
Es gibt nur einen Return-Parameter.
Eine eigene Klasse z.B. in Form eines Records wäre auf jeden Fall die beste Lösung, vor allem auch, weil deine Datentypen sonst ziemlicher Murks sind.
Falls du aber tatsächlich alle einzelnen Felder eines Arrays einer Rückgabe dokumentieren willst, kannst du das so machen:
Java:
/**
 * @return Array: <b>String[]</b>
 * <li> [0] Datum (dd.MM.yyyy, ungültig)
 * <li> [1] Uhrzeit (HH:mm:ss)
 * <li> [2] DatumUhrzeit (dd.MM.yyy HH:mm:ss)
...
*/
Nicht schön, aber selten
 

MiMa

Top Contributor
Danke für die Information.
Ich bin mir noch am überlegen, wie ich das am besten löse.
Die Klasse Datum, in der meine eigenen Methoden implementiere sind ohne Variablen, Getter und Setter das es in einem Projekt welches ich eigens als Bibliothek verwende. Dort landen alle meine Methoden die ich in anderen Programmen verwende. Oft wird dies dann als JAR Bibliothek eingebunden. Ich bin mir nicht sicher, ob ich in dieser Klasse Variablen Getter und Setter implementieren sollte um dann auch das Problem eleganter zu lösen?
 

Neumi5694

Top Contributor
Geter auf jeden Fall. Wenn die Werte nur einmalig beim Erstellen gesetzt werden, braucht es keine Setter.
Ansonsten sind diese grundsätzlich auch anzulegen.
Was ich bei records nicht mag, ist, dass die Getter kein "get" als Präfix haben und das das Record public Zugriff auf die Variablen erlaubt.. Da sind selbst angelegte Klassen schöner.
 

MiMa

Top Contributor
Ich habe das Problem wie vorgeschlagen als eigene Klasse "Datum" mit Variablen Get -und Set Methoden sowie spezielle Methoden umgesetzt.

Vielen Dank für die Unterstützung.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Beim Java Programmstart, mehrere Parameter über die Kommandozeile übergeben Java Basics - Anfänger-Themen 9
U Kann man bei Java gleich mehrere Bedingungen prüfen in der If, aber in einem "Satz"? Java Basics - Anfänger-Themen 1
TimoN11 Java - Eine oder mehrere Eingaben möglich machen Java Basics - Anfänger-Themen 6
I Klassen Mehrere Java Klassen in einer .java Datei Java Basics - Anfänger-Themen 7
T Java Applet braucht mehrere Minuten zu Start Java Basics - Anfänger-Themen 5
K Java Split mehrere Zeilen Java Basics - Anfänger-Themen 4
D Java Download in mehrere Parts aufteilen Java Basics - Anfänger-Themen 2
W Java ProcessBuilder - externer Prozess nur einmal starten und mehrere Inputs geben Java Basics - Anfänger-Themen 7
K Java-FileChooser - mehrere Dateien auswählen Java Basics - Anfänger-Themen 3
E Vermeiden,dass mehrere Instanzen eines Java-Programms laufen Java Basics - Anfänger-Themen 2
M java mehrere jar files uebergeben Java Basics - Anfänger-Themen 5
B Aus 1 *.java mehrere *.class compiliert Java Basics - Anfänger-Themen 7
G mehrere hundert Java-Dateien kompilieren Java Basics - Anfänger-Themen 5
W Methoden java map ersatz für c++map Java Basics - Anfänger-Themen 2
M Erste Schritte Java Primzahltester Java Basics - Anfänger-Themen 4
A csv Reader für Java? Java Basics - Anfänger-Themen 24
K Java - Enums Java Basics - Anfänger-Themen 30
tomzen Java Unterstützung für exel dateien installieren. Java Basics - Anfänger-Themen 2
Rookar java.lang.NoClassDefFoundError: org/json/JSONException Java Basics - Anfänger-Themen 2
Rookar Mit Button andere java öffnen Java Basics - Anfänger-Themen 4
F Java Object to Hashmap ? Java Basics - Anfänger-Themen 6
I Backend in Java und Ansicht von Dateien in statische HTML Seiten? Java Basics - Anfänger-Themen 15
R Input/Output Verwendung des Euro-Zeichens in Java Java Basics - Anfänger-Themen 7
I Push Nachrichten von JAVA EE App an Mobile App Java Basics - Anfänger-Themen 3
H .java Dateien in Eclipse einbinden und ausführen Java Basics - Anfänger-Themen 1
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
V Java-Ausnahmebehandlung: Behandlung geprüfter Ausnahmen Java Basics - Anfänger-Themen 1
krgewb Java Streams Java Basics - Anfänger-Themen 10
A Überwältigt von der komplexen Java Welt Java Basics - Anfänger-Themen 29
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
John_Sace Homogene Realisierung von Generics in Java ? Java Basics - Anfänger-Themen 19
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
R mit Java API arbeiten Java Basics - Anfänger-Themen 9
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
S Video Editierung mit Java.._ Java Basics - Anfänger-Themen 2
F Einstelungen in Java - CursorBlinkRate Java Basics - Anfänger-Themen 10
A PHP $_POST["name"] in Java Java Basics - Anfänger-Themen 3
vivansai21 Is there a oneliner to create a SortedSet filled with one or multiple elements in Java? Java Basics - Anfänger-Themen 9
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
Arjunreddy Can someone please tell me how to use a debugger in BlueJ(a Java environment) Java Basics - Anfänger-Themen 1
M Java assoziationen (UML) Java Basics - Anfänger-Themen 8
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
xXGrowGuruXx Java einstieg, leichte sache 0 verstanden Java Basics - Anfänger-Themen 7
A java.sql.SQLException: Data type mismatch. Java Basics - Anfänger-Themen 1
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
A Lerngruppe Java Java Basics - Anfänger-Themen 2
G Help me in the Java Program Java Basics - Anfänger-Themen 2
L Java- Vererbung Java Basics - Anfänger-Themen 4
LimDul Suche Java Stream Tutorial Java Basics - Anfänger-Themen 2
_so_far_away_ Ich möchte Java lernen Java Basics - Anfänger-Themen 11
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
V Bild per Java Script austauschen Java Basics - Anfänger-Themen 7
MoxMorris this Keyword in Java Java Basics - Anfänger-Themen 14
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
wolei JAVA Zeitdifferenz feststellen. Java Basics - Anfänger-Themen 4
DiyarcanZeren Rekursion in Java Java Basics - Anfänger-Themen 5
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
monsterherz Circle.java:5: error: <identifier> expected Java Basics - Anfänger-Themen 2
julian-fr Wie kann ich am besten Java lernen? Java Basics - Anfänger-Themen 17
A Java-Properties und -RessourceBundles Java Basics - Anfänger-Themen 5
lrnz22 Java-Basics-Aufgabe Java Basics - Anfänger-Themen 8
R Java kann nicht installiert werden Java Basics - Anfänger-Themen 8
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
G In ein java Dokument Ton einbinden Java Basics - Anfänger-Themen 1
C was heisst es wenn java ']' erwartet ? Java Basics - Anfänger-Themen 2
KeinJavaFreak Erste Schritte Programm "Java(TM) Platform SE binary " nicht vorhanden Java Basics - Anfänger-Themen 1
KeinJavaFreak Erste Schritte Java "Executable Jar File" nicht vorhanden Java Basics - Anfänger-Themen 1
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
J Java Testklasse Java Basics - Anfänger-Themen 5
P Java Selenium . Parameterized.Parameters erzeugt eine Fehlermeldung Java Basics - Anfänger-Themen 14
W Java-Code mit Array Java Basics - Anfänger-Themen 14
W Java-Code Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben