获取对象为null的对象类型?

Mon*_*rlo 11 java runtime-error runtime

下面的代码确实编译,但为什么我会得到一个运行时异常?

String b = null;
System.out.println(b.getClass());
Run Code Online (Sandbox Code Playgroud)

我得到的错误是

java.lang.NullPointerException
Run Code Online (Sandbox Code Playgroud)

即使将对象设置为null,如何获取对象的类型?

编辑 我意识到没有对象存在,但仍然有一个String类型的对象b.即使它没有对象,它仍然有一个类型.如何获取对象的类型,无论它是否包含对象,或者它是否存在.

Sot*_*lis 14

当你有

String b = null;
Run Code Online (Sandbox Code Playgroud)

你实际上有什么是引用类型的变量String所引用null.您无法取消引用null以调用方法.

使用局部变量,您无法按照要求执行操作.

使用成员变量,您可以使用反射来查找字段的声明类型.

Field field = YourClass.class.getDeclaredField("b");
Class<?> clazz = field.getType(); // Class object for java.lang.String
Run Code Online (Sandbox Code Playgroud)


SLa*_*aks 3

这里没有对象,也null没有类型。
你不能那样做。