Long in int umwandeln, casten klappt nicht

Nobody

Mitglied
kurz und knapp:

long to int ... geht (hab ich in einer selbstgebauten Klasse)

Long to int ... geht nicht?

zumindest nicht so:

PHP:
int tempInt = (int) myLong;

da bekomme ich "incovertible types" als Fehlermeldung...

WHY?
 
Das liegt daran, dass int und long ein primitives objekt ist. Es hat keine Funktionen eines "Object", wie z.B. ToString(). Long kannst du deshalb auch nicht in int sondern in Integer imwandeln
 
Das ist zum Teil richtig. Du musst für den Cast schon die Typen Integer und Long verwenden. Durch Autoboxing (automatische Umwandlung von primitiven in Objekte, also int <-> Integer, long <-> Long) kann man aber durchaus primitive Typen casten. Ein Cast funktioniert (eigentlich selbstverständlich) nur, wenn das Quellobjekt auch vom Typ des Casts ist. Ich kann z.B. ein Number Objekt auf Integer casten, solang es ein Integer ist. Allerdings kann ich keinen String "2" nach Integer casten, da ein String nun mal nichts mit Integer zu tun hat.

Long nach Integer sollte mit .intValue() auf dem Long gehen. Dabei muss dir aber bewusst sein, dass Long einen größeren Wertebereich hat als Integer und es so zu Truncations kommen kann.

Gruß
Ollie
 
Danke für die Infos...

Ich hatte da noch andere Fehler bezüglich <int> vs <Integer> und <long> vs <Long>.

Komischerweise (ich habe nun alles abgeändert) konnte meine aus anderen Threads bekannte ArrayList<ArrayList<ArrayList<Integer>>> mit nem (int) Key befüllt und auch wieder gelöscht werden, jedoch klappte die get Methode nur mit einer Integer, Fehlermeldungen hatte ich keine! weder beim Compilieren noch Später zur Runtime als Exception.

Danke auf jeden, nun läuft alles wie es soll :)

mfg
 

Neue Beiträge

Zurück