2014-11-03 43 views
0

我是Java新手,需要在方法返回null和引用變量時找出過程。當方法返回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

如果您不小心,最終可能會得到NPE ..:P。沒什麼特別的事返回'null'就像返回對其他實例的引用。 – TheLostMind 2014-11-03 10:32:33

回答

5

null對於Java中的任何Object都是有效的值。由於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(); 
} 
0

由於null是一個值,你的程序將編譯好的。

但是,根據您使用null變量的情況,您在運行應用程序時可能會以NullPointerException結束。

1

Null在java的意思是說,你的實例(變量)不包含任何對象。你可以使用它,但是你不能在該對象上調用任何方法,因爲如果你這樣做了,你會得到一個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); 
} 
相關問題