Mys*_*yst 3 java reflection field class instance
问题
布尔字段的类对象不会将其他布尔值识别为实例.
码
public class Test {
public boolean b;
public static void main(String[] args) {
System.out.println(Test.class.getFields()[0].getType().isInstance(true));
}
}
Run Code Online (Sandbox Code Playgroud)
结果
false
Run Code Online (Sandbox Code Playgroud)
方法是isInstance(Object)所以
x.isInstance(true)
Run Code Online (Sandbox Code Playgroud)
是相同的
x.isInstance(Boolean.TRUE);
Run Code Online (Sandbox Code Playgroud)
和Boolean.class不是boolean.class的子类.
注意:基元没有getClass()
方法或任何方法.当您可以将它用作对象时,它已被装箱.
从文档 Class#isInstance(Object obj)
...如果此Class对象表示基本类型,则此方法返回false.
请注意,期望参数始终是Object
,这意味着它将始终是某个类的实例(不包括基本类型).
即使你在这里传递原始类型,它也会被自动装箱到它的包装类,但是这样的包装类与原始类型不同,Class
并且在你的情况下返回getType()
.