PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Return mit Int und null



BlueJay
26-07-2009, 11:00
Hallo Leute,

ich habe da so eine Funktion, die im Erfolgsfall ein Integer abliefern soll, sonst null.
Irgendwie bekomme ich das nicht hin (bin javascript-versaut).

Mein Ansatz:


public int get_element(int i)
{
if (liste[0]>0) return liste[i]; else return null;
}

Hier kratzt sich der Compiler am erwarteten int-Returnwert.

Ansatz 2:


public Integer get_element(int i)
{ if (liste[0]>0) return (Integer)(liste[i]);
else return null;
}

Da passt ihm die Umwandlung Integer<-->int nicht.

so long,
BlueJay

bischi
26-07-2009, 12:22
Wieso nicht einfach so?

return null -> return 0

MfG Bischi

PS: Wobei - eigentlich sollte das gehen - soweit ich mich errinnere - mit '0' hast du einfach den Vorteil, dass du etwas weniger abfangen musst...

BlueJay
26-07-2009, 12:36
... weil 0 als Wert vorkommt?

Gefressen hat der Compiler letztendlich dies:


public Integer get_element(int i)
{ if (liste[0]>0) return (new Integer(liste[i]));
else return null;
}

undefined
26-07-2009, 13:00
Kenn mich mit Java nicht so aus.
Daher vielleicht - Entweder Überladen oder, du bekommst das nur mit einem Zeiger auf ein Objekt hin das Multible Datenformen zurückgeben kann.


public MeinDatenHandler get_element(int i)
{
MeinDatenHandler h;
// ...
return h;
}

http://java.sun.com/docs/books/tutorial/java/javaOO/returnvalue.html

BlueJay
26-07-2009, 13:13
Kenn mich mit Java nicht so aus.
Daher vielleicht - Entweder Überladen oder, du bekommst das nur mit einem Zeiger auf ein Objekt hin das Multible Datenformen zurückgeben kann.
Fein, ich mich auch nicht so...
Aber gefressen habe ich mittlerweile, dass man null nur bei Objekten anbieten kann, int ist ein primitiver Datentyp.
Verwirrt hat mich, dass meine Allerwelts-Umwandlungsformel (Integer)(irgendein_Ausdruck) nicht funktioniert hat.

anda_skoa
27-07-2009, 15:10
Verwirrt hat mich, dass meine Allerwelts-Umwandlungsformel (Integer)(irgendein_Ausdruck) nicht funktioniert hat.

Das ist keine Umwandlung, sondern ein Cast. Ein Cast reinterpretiert mehr oder weniger das auf der rechten Seite als das was in der Klammer steht.
Und einen Primitive Type kann man nicht als Referenz auf einen Class Type reinterpretieren.
(Bei direktem Zugriff auf einen Pointer wie in C/C++ kann man das schon, aber jeder der das macht gehört ordentlich, um, "motiviert" das nicht mehr zu tun)

Zum eigentlichen Problem: wäre es nicht besser, erst gar keine ungültigen Werte in das Array reinzulassen?
Bzw, falls das einen Fehler indiziert, vielleicht eine Exception werfen

Ciao,
_

lokicall
03-08-2009, 22:30
Vielleicht verstehe ich dich falsch oder es liegt einfach nur an der Uhrzeit. Wieso denn nicht so?



public Integer get_element(int i) {
if (liste[0]>0) return new Integer(liste[i]);
else return null;
}