Methoden return nullprüfung

Zet

Aktives Mitglied
Guten Morgen zusammen,

ich habe eine kleine Frage bezüglich dieser Methode.

Java:
public Artikel getArtikel(String artikelbezeichnung)
	{
		if (Artikelliste.size() == 0)
		{
			System.out.println("Die Liste ist Leer");
		}

		for (Artikel a : Artikelliste)
		{
			if (a.getArtikelbezeichnung().equals(artikelbezeichnung))
			{
				return a;
			}
		}
		System.out.println("Artikel nicht vorhanden");
		return null;
	}

Ich stelle mir den Aufruf vor:
Java:
verkaufe(getArtikel("Java ist auch eine Insel"));

Nun ist das Element nicht in der Liste vorhanden, es wird also null zurückgegeben - was in diesem zusammenhang natürlich mist ist - wie kann man das elegant lösen? Oder ist die einzige möglickeit in der verkaufe-Methode zu testen ob das übergebene Objekt null ist?


Hoffe ihr habt ein wenig Erfahrung für mich 🙂

Lg
zet
 
ähhhhhhhh sry was ist Mist? 😀
naja du musst nicht ausgerechnet null zurückgeben, du kannst auch Strings oder ints zurückgeben. Aber was bringt dir das dann? Kommt halt drauf an was du mit dem zurückgegebenen weiter machen möchtest 😉
 
Hallo zet,
ich kann dir leider nicht ganz folgen 🙂
Wenn du was übergibst und es nicht in der Liste vorkommt, wolltest du doch, dass "null" zurückgegeben wird ?!
Wenn du mir genauer erklären kannst, was dein Problem ist, helfe ich dir gerne 😉
 
Moin,

suchst Du vlt. sowas ?
Java:
Artikel myArtikel = getArtikel( "Java ist auch eine Insel" );
if( myArtikel != null )
{
    verkaufe( myArtikel );
}
else
{
   // gebe Fehler aus oder was auch immer ....
}

Gruß
Klaus
 
In Java 8, unter der Annahme das Artikelliste irgendeine Collection ist, sowie verkaufe eine Methode eines Objekts, ungefähr so

Java:
public Optional<Artikel> getArtikel(final String bezeichnung){
    return Artikelliste.stream()
            .filter(a -> Objects.equals(bezeichnung, a.getArtikelbezeichnung()))
            .findFirst();
}

//Aufruf
getArtikel("Java ist auch eine Insel").ifPresent(this::verkaufe);
 
Zuletzt bearbeitet:
// EDIT:
@VfL_Freak
Ich denke das kommt in etwa hin, wie würdest du im else weitermachen?


Java:
Artikel myArtikel = oVerwaltung.getArtikel("Java ist auch eine Insel"); // --> dieser Artikel existiert nicht, null rückgabe
oVerwaltung.insert(myArtikel);                          // --> NPE, versucht null in ArrayList<Artikel> zu packen
oVerwaltung.ausgabe();

Und soetwas möchte ich eben entgegenwirken.
Desto mehr ich darüber nachdenke desto weniger Sinn macht das ganze für mich :bahnhof:
Hat jemand zufällig eine Verwaltung oder ähnliches rumliegen, vielleicht geh ich das ganze schon vom Prinzip her falsch an.
Oder kann ich einfach mal den Code posten, und ihr gebt euren Senf dazu? :bae:
Ich möchte einfach sicherstellen nicht auf irgendwelche exceptions zu fliegen.






[OT]Uiuiui, da hab ich mich wohl äußerst unverständlich ausgedrückt 😀.
War auch nur ein Beispiel das ich mir schnell aus den Fingern gezogen habe.

Also ich dachte mir einfach nur das es unschön ist null zurückzugeben, denn damit müsste ich ja in jeder Methode die getArtikel mal aufrufen wird, prüfen ob der Return-Wert null ist. Und irgendwann fliegt man da sicher über eine NPE.

Deshalb hätte ich es schön gefunden noch in der Methode dagegenzusteuern null zurückzugeben. Was natürlich schwer ist wenn die Methode besagt das sie ein Objekt zurückgibt.. hehe. Ich habe einfach mal ins blaue gefragt ob es da nicht elegantere Alternativen gibt, soll ja vieles in Java geben was man nicht kennt.. 😉

Lange rede garkein Sinn, habe einen schönen/komfortablen Weg gesucht mit NULL umzugehen.
Eine art "best Practice" wie man hier vorgeht.

Trotzdem danke an alle, die versucht haben meinen geistigen Ergüsse zu folgen 😀
[/OT]


Grüße
Zet
 
Zuletzt bearbeitet:
Was auf jeden Fall quatsch ist, dass du wenn die Liste leer ist was anderes zurück gibst als wenn der Artikel nicht in der Liste ist. Also entweder bei beiden null zurück geben oder bei beiden "Der Artikel befindet sich nicht in der Liste"

Gruß

Claus
 
Zuletzt bearbeitet:

Zurück
Oben