当方法返回null时会发生什么

时间:2014-11-03 10:31:38

标签: java

我是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和引用变量时会发生什么,同时具有类数据类型?

请用简单的词语解释。

3 个答案:

答案 0 :(得分:5)

nullObject中任意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)

java中的

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