Erstellen einer primitiven Instanz (Box), wenn die Klasse bekannt ist

8

Ich brauche eine Methode, die eine Instanz des angegebenen Klassentyps zurückgibt. Nehmen wir an, dass die bereitgestellten Typen darauf beschränkt sind, dass eine "leere" Instanz von ihnen erstellt werden kann. Wenn Sie beispielsweise String.class angeben, wird ein leerer String zurückgegeben, und ein Integer.class liefert eine Ganzzahl, deren Anfangswert gleich Null ist usw. Aber wie erstelle ich (boxed) primitive Typen im laufenden Betrieb? So?

%Vor%

Ist die einzige Lösung, um alle möglichen primitiven Typen zu durchlaufen, oder gibt es eine einfachere Lösung? Beachten Sie, dass beide

%Vor%

und

%Vor%

werfen ein InstantiationException (weil sie keine Sternkonstruktoren haben).

    
Joonas Pulakka 13.11.2009, 11:25
quelle

1 Antwort

12

Ich vermute, der einfachste Weg ist eine Karte:

%Vor%

Glücklicherweise sind alle diese Typen unveränderlich, daher ist es in Ordnung, bei jedem Aufruf für denselben Typ einen Verweis auf dasselbe Objekt zurückzugeben.

    
Jon Skeet 13.11.2009, 11:27
quelle

Tags und Links