【发布时间】:2012-03-13 06:13:17
【问题描述】:
有一个函数 get() 如果它在 ArrayDeque 中则返回一个值,否则返回 null 即 x 可以是某个值或 null。如果 get() 返回 x 那么函数 B() 应该执行一些计算,否则不应该做任何事情。
T get()
{
//compute x
return x;
}
void B()
{
int z;
if(y.get()!=null)
{
z=y.get(); // gives null pointer exception
.....
}
}
问题是 y.get() 已经返回没有分配给任何变量的值,因此给出了空指针异常。如果我使用if((z=y.get()) != 0) 之类的东西,它会在 x 为空的情况下给出异常。我怎样才能实现这个功能?
【问题讨论】:
-
如何返回 null 并将其分配给 int 变量 z ?它的类型不匹配。
-
您编写的任何一个版本都不应该抛出,除非是
get本身抛出。您确定您查看的是代码的正确部分吗? -
这就是为什么我把检查放在 if 条件中。
-
那么,
get()是返回T还是Integer? B() 似乎假设它是一个整数。 -
y.get() 仅当 y 为空时才会抛出空指针...或者可能是您的 get() 内部的某些逻辑抛出异常...
标签: java oop function if-statement