这段代码会抛出一个NullPointerException
,因为它将其拆箱为原始类型,并调用Long.longValue()
,对吧?取消装箱Null对象长时间导致NullPointerException,罚款?
那甚至很容易看到,如果你有这样一个片段:
long value = (Long) null;
但NullPointerException
更难更复杂的情况是这样得到:
long propertyValue = (Long) obj.getProperty(propertyModel.getName());
就违反” Java编译器有没有可能使这个更舒适的异常呢?我更喜欢IllegalArgumentException
,并带有一条消息,如“你试图将一个空对象转换为原始类型,这是不能完成的!”
这不是更合适吗?你怎么看?这在运行时甚至可能吗?我们能够确定这个演员吗?我还没有看过java字节码。也许它可以用于解决方案。
这个问题可以回答:我想知道是否有可能实现这种行为!
NPE似乎没什么问题。可空性注释可能有所帮助。 (** **的Un拳,顺便说一句。) – 2010-03-04 19:27:22