我是Java新手,需要在方法返回null和引用变量时找出进程。
以下是该方法的代码:
public Lot getLot(int lotNumber)
{
if((lotNumber >= 1) && (lotNumber < nextLotNumber)) {
// The number seems to be reasonable.
Lot selectedLot = lots.get(lotNumber - 1);
// Include a confidence check to be sure we have the
// right lot.
if(selectedLot.getNumber() != lotNumber) {
System.out.println("Internal error: Lot number " +
selectedLot.getNumber() +
" was returned instead of " +
lotNumber);
// Don't return an invalid lot.
selectedLot = null;
}
return selectedLot;
}
else {
System.out.println("Lot number: " + lotNumber +
" does not exist.");
return null;
}
}
当方法返回null和引用变量时会发生什么,同时具有类数据类型?
请用简单的词语解释。
答案 0 :(得分:5)
null
是Object
中任意Java
的有效值。由于Lot
也是Java
对象。 null
有效。
但是
如果您不小心,最终可能会NullPointerException
。
例如:
Lot lot=someInstance.getLot(2); // say lot is null
然后
String something=lot.getThis(); // here is null.getThis()
您最终会在NullPointerException
结束。
您需要谨慎处理这些情况以避免NullPointerException
。
例如:
Lot lot=someInstance.getLot(2);
if(lot!=null){
String something=lot.getThis();
}
答案 1 :(得分:1)
Null
表示您的实例(变量)不包含任何对象。您可以使用它,但不能在该对象上调用任何方法,因为如果您这样做,则会得到NullPointerException
。
从方法返回null
时,通常意味着该方法无法创建有意义的结果。例如,从数据库读取数据的方法无法找到指定的对象,或者在方法运行期间发生了一些错误。
如果方法可以返回null,那么你应该在进一步处理之前检查结果。请参阅提高员工薪水的示例:
Employee e = database.getEmployeeById(1);
if (e==null) //this is the check
{
System.out.println('There is no such employee');
}
else
{
e.setSallary(e.getSallary() * 1.1);
}
答案 2 :(得分:0)
由于null
是一个值,您的程序编译正常。
但根据您使用null
变量的情况,您在运行应用时最终可能会NullPointerException
。