2012-04-09 19 views
1

Wenn ich dieses Codefragment ausführen, wird keine Seite genommen.Java, kann Boolean von Boolean zugewiesen werden, und umgekehrt?

if (Boolean.class.isAssignableFrom(boolean.class)) { 
    uLog.error("Boolean is => boolean"); 
} 
if (boolean.class.isAssignableFrom(Boolean.class)) { 
    uLog.error("boolean is <= Boolean"); 
} 

Insbesondere bin ich versucht, die Paramter Typen mithilfe von Reflektion zu testen:

Type[] pType = m.getGenericParameterTypes(); 

und ich kann den richtigen Test für boolean Parameter nicht herausgefunden.

+0

Das ist, weil die Antwort in beiden Fällen "nein" ist ... Ich sehe nicht, was das mit dem Erhalten der Parametertypen zu tun hat? – Ryan

+0

@mini, es war ein trivialer Testfall, von dem ich dachte, dass er den Typ getestet hat. – fishtoprecords

Antwort

1

Die Art der eingebauten in boolean durch Boolean.TYPE vertreten ist. Da boolean nicht vererbt werden kann, benötigen Sie nicht isAssignableFrom: Sie können einfach den betreffenden Typ auf Boolean.TYPE überprüfen, um zu sehen, ob der Typ eines Parameters eingebaut ist boolean.

5

Boolean (das Objekt) und boolean (das Primitive) können nicht miteinander verknüpft werden. Seit Java 1.5 wird der Compiler jedoch automatisch zwischen beiden Boxen ein-/ausboxen.

Wenn Sie das tun:

boolean b = 
Boolean bb = b; 
b = bb; 

Der Java-Compiler automatisch konvertiert es in:

boolean b= 
Boolean bb = Boolean.valueOf(b); 
b = bb.booleanValue();