首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java 方法參數為物件引用:無需 new 即可呼叫方法

     編輯:程式設計疑難解答

程式碼中 goddess g 是方法參數,未 new 卻能呼叫 g.getXXX(),原因與集合取值相同。

核心解釋

  • 呼叫端傳入的已經是物件實例的引用(或 null)。
  • 編譯器只檢查引用型別有無該方法,不檢查實際是否為 null。
  • 執行期若引用為 null,拋出 NullPointerException。

防禦性程式設計

public void doSomething(Goddess g) {
    if (g == null) {
        throw new IllegalArgumentException("goddess 不能為 null");
    }
    // 或預設值
    String name = g != null ? g.getName() : "未知";
    ...
}

最佳實務

  1. 方法文檔標註 @param g 不能為 null。
  2. 公開 API 進入點做非空驗證。
  3. 內部私有方法可信任呼叫端已驗證。

理解「引用傳遞」與「實例建立」的區別,是避免 NPE 的關鍵。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved