以下代码可以编译,但为什么会出现运行时异常?
String b = null;
System.out.println(b.getClass());
我得到的错误是
java.lang.NullPointerException
即使对象设置为 null,如何获取对象的类型?
Edit我意识到不存在任何对象,但仍然有一个 String 类型的对象 b。即使它不包含任何对象,它仍然有一个类型。如何获取对象的类型,无论它是否包含对象。
当你有
String b = null;
你实际上拥有的是一个引用类型的变量String
那就是引用null http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.1。您不能取消引用null
调用一个方法。
使用局部变量,您无法执行您所要求的操作。
对于成员变量,您可以使用反射来查找字段的声明类型。
Field field = YourClass.class.getDeclaredField("b");
Class<?> clazz = field.getType(); // Class object for java.lang.String
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)