Hallo,
ich wollte mich heute mal ein wenig in GUI Programmierung mit Java einarbeiten und war geschockt:
Ich komme von C++ über C# mit .NET zu Java.
Nun, in .NET gibt es mit den WindowsForms eine TextBox, die ein Text-Attribut bereitstellt (Text / get_Text() / set_Text()). Steht in dieser TextBox beispielsweise eine Zahl und diese Zahl soll bei bestimmten Aktionen in- bzw. dekrementiert werden, würde ich das über das Keyword "int" lösen, dass die Klasse Int32 im .NET Framework repräsentiert:
"Mach' ich das so auch in Java einfach", dacht ich mir. "Denkste!", gibt mir der Java-Compiler zu verstehen.
"So geht das nicht, Freundchen.".
Naja, ich fand raus, dass ich es wohl über ein "optisch schönes"
regeln darf bzw. muss.
Der Unterschied zwischen beiden Konstrukten ist, dass ich bei C# nicht gezwungen bin, "explizit" noch ein neues Integer Objekt zu erzeugen, weil der Rückgabewert von ParseInt() ein int ist und int selbst nur ein Alias für Int32 - also eine von Object abgeleitete Klasse - ist.
Bei Java gibt parseInt() ein int zurück, KEIN Integer. Demnach kann ich toString() nicht auf das Ergebnis anwenden, sondern muss aus der Addition von Rückgabewert plus eins noch ein neues Integer Objekt erzeugen.
Nun zur Frage:
Ich meine irgendwo gelesen zu haben, dass mit dem JDK 1.5 der Typ int auch in einen Alias von Integer umgeändert worden sei. Stimmt das? Oder habe ich mich wohl nur verlesen?
Wenn es stimmen sollte, warum funktioniert das bei mir nicht
?
Ansonsten, gibt es vielleicht sonst noch irgendwelche nützlichen Tips dies bezüglich?
Grüße
plusman
ich wollte mich heute mal ein wenig in GUI Programmierung mit Java einarbeiten und war geschockt:
Ich komme von C++ über C# mit .NET zu Java.
Nun, in .NET gibt es mit den WindowsForms eine TextBox, die ein Text-Attribut bereitstellt (Text / get_Text() / set_Text()). Steht in dieser TextBox beispielsweise eine Zahl und diese Zahl soll bei bestimmten Aktionen in- bzw. dekrementiert werden, würde ich das über das Keyword "int" lösen, dass die Klasse Int32 im .NET Framework repräsentiert:
Code:
tfCounter.Text = (int.ParseInt(tfCounter.Text) + 1).ToString();
"Mach' ich das so auch in Java einfach", dacht ich mir. "Denkste!", gibt mir der Java-Compiler zu verstehen.
"So geht das nicht, Freundchen.".
Naja, ich fand raus, dass ich es wohl über ein "optisch schönes"
Code:
tfCounter.setText(new Integer(Integer.parseInt(tfCounter.getText()) + 1).toString());
Der Unterschied zwischen beiden Konstrukten ist, dass ich bei C# nicht gezwungen bin, "explizit" noch ein neues Integer Objekt zu erzeugen, weil der Rückgabewert von ParseInt() ein int ist und int selbst nur ein Alias für Int32 - also eine von Object abgeleitete Klasse - ist.
Bei Java gibt parseInt() ein int zurück, KEIN Integer. Demnach kann ich toString() nicht auf das Ergebnis anwenden, sondern muss aus der Addition von Rückgabewert plus eins noch ein neues Integer Objekt erzeugen.
Nun zur Frage:
Ich meine irgendwo gelesen zu haben, dass mit dem JDK 1.5 der Typ int auch in einen Alias von Integer umgeändert worden sei. Stimmt das? Oder habe ich mich wohl nur verlesen?
Wenn es stimmen sollte, warum funktioniert das bei mir nicht
Ansonsten, gibt es vielleicht sonst noch irgendwelche nützlichen Tips dies bezüglich?
Grüße
plusman