为什么NullPointerException不是泛型类?

时间:2014-06-24 21:15:21

标签: java generics nullpointerexception

通常在编写程序时,我遇到了NullPointerException,我没想到。我经常花费永远找到究竟是null的内容,但却发现这对我来说是一个简单的疏忽。

我想知道的是:为什么NullPointerException不是通用的。

例如:

    java.lang.NullPointerException<(Class of object that is null)>
        at (Stack trace)

而不是:

    java.lang.NullPointerException
        at (Stack trace)

对我而言,这将大大减少调试所花费的时间,而且似乎难以实现。

顺便说一句, catch如何阻止使用通用例外呢?

4 个答案:

答案 0 :(得分:2)

来自javadocs:泛型作为增强功能允许类型或方法对各种类型的对象进行操作,同时提供编译时类型安全性。但是在编译时你无法知道对象是否为空。

null类型没有名称,不可能声明null类型的变量或转换为null类型。空引用是null类型表达式的唯一可能值。 null引用始终可以强制转换为任何引用类型。在实践中,程序员可以忽略null类型,只是假装null只是一个可以是任何引用类型的特殊文字

答案 1 :(得分:2)

调试器旨在减少调试时间。

null没有类型,因此您无法向NPE添加类型。

如果在同一行上有许多表达式可能是null,那么你试图在一行中做太多(或者你应该使用调试器)

答案 2 :(得分:0)

关键是变量是指向直到运行时才定义的类的指针(通常使用接口定义变量并使用实现进行实例化)。所以,如果你收到一个空指针异常,就意味着......这个指针还没有被初始化,所以...它不可能知道它是哪个类(因为它指向什么都没有)。

答案 3 :(得分:0)

当您的变量为null时,NPE会出现。 =&gt;所以你的变量不是任何类型的。

NPE的目的是告诉你&#34;嘿,男人,你在尝试什么都不做的事情&#34;。 不要告诉你为什么没有。

要告诉为什么会出现错误,要花费太多时间。

相关问题