Wie schreibe ich nullable int in Java?

73

Ich möchte ein Webformular in ein Modell in Java konvertieren.

In C # kann ich folgendes schreiben:

<input name="id" value="" type="text"/>


public class Test
{
    public int? Id{get;set;}
}

Das idkann null sein.

In Java wird bei Verwendung von struts2 jedoch eine Ausnahme ausgelöst:

Method "setId" failed

Wie schreibe ich diesen Fall in Java?

Bulldozer
quelle
8
verwenden Integerstatt int.
Lordo

Antworten:

139

Anstatt zu verwenden int, können Sie Integer( Integer javadoc ) verwenden, da es sich um eine nullfähige Java-Klasse handelt.

Ivaylo Strandjev
quelle
6
danke ~ 'int' ist dasselbe wie 'Integer' in C #, daher kannte ich diese Lösung nicht.
Dozer
@Dozer vergiss nicht, diesen Beitrag als Antwort zu markieren, sobald die 15 Minuten vergangen sind.
Luiggi Mendoza
47

Sie können ein verwenden Integer, das ein Referenztyp (eine Klasse) in Java ist und daher nullbar ist.

Int32(oder int) ist eine Struktur (Werttyp) in C #. Im Gegensatz dazu Integerin Java ist eine Klasse , die umschließt ein int. Instanzen von Referenztypen können sein null, was Integereine legitime Option darstellt.

Nullable<T>In .NET stehen Ihnen ähnliche Optionen zur Verfügung, da Sie einen Wertetyp wie einen nullbaren Typ behandeln können. Es unterscheidet sich jedoch immer noch von Java, Integerda es als Struktur (Werttyp) implementiert ist, die mit nulleiner echten Nullreferenz verglichen werden kann , diese jedoch nicht enthalten kann.

Matthias Meid
quelle
3
Dies ist eine gründlichere Antwort als die akzeptierte
John Demetriou
8

Verwenden Sie in Java einfach Integeranstelle von int. Dies ist im Wesentlichen ein nullable int. Ich bin mit Struts nicht allzu vertraut, aber mit Integersollten Sie den Wert weglassen können.

Polaris878
quelle