Ist int.class gleich Integer.class oder Integer.TYPE in Java?
Stellen wir uns vor, man ruft mit der Erklärung Typ eines Field
mit der spiegelung.
Welche der folgenden tests richtig deuten, ob es sich um eine int
oder eine Integer
?
Field f = ...
Class<?> c = f.getDeclaringClass();
boolean isInteger;
isInteger = c.equals(Integer.class);
isInteger = c.equals(Integer.TYPE);
isInteger = c.equals(int.class);
isInteger = ( c == Integer.class);
isInteger = ( c == Integer.TYPE);
isInteger = ( c == int.class);
Kommentar zu dem Problem
warum nicht testen Sie es selbst? Warum nicht das Lesen der javadoc?
warum Fragen Sie dies nicht nur läuft es sich? Dies ist sehr gut dokumentiert.
Sie schrieb bereits den code, warum Sie nicht einfach wickeln Sie es in ein Haupt-und kompilieren und führen Sie es?
Das Problem mit dem testen mich nur, dass es ein Risiko fehlt eine Ecke Fall. Das ist, warum ich bin mit der Frage.
JVersty korrekt ist. Implementierung und Spezifikation sind verschiedene Dinge. Er will wissen, über die Spezifikation, die mehr auf hart, dann laufen Sie einfach ein Stück code... +1
InformationsquelleAutor der Frage JVerstry | 2011-08-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Basierend auf
Field.getType()
(stattf.getDeclaringClass()
), bekomme ich die folgende:Bedeutung der folgenden Bedingungen erfüllt ist:
Heißt, wenn ich heraus finden will ob ich der bin den Umgang mit einer
int
oder eineInteger
kann ich verwenden Sie eine der folgenden tests:Gibt es eine Ecke, falls ich vermisst werde? Wenn ja, bitte kommentieren.
InformationsquelleAutor der Antwort JVerstry
int.class
kompiliert unten zuInteger.TYPE
. Aber ich glaube, Sie sind mit- Feld.getDeclaringClass()
falsch, da dies gibt dieClass
- Objekt, das die Klasse, in der Sie deklariert das Feld. Was würden Sie wollen, zu verwenden ist- Feld.getType()
.InformationsquelleAutor der Antwort Paul Bellora