方法聲明返回 long,但在三個 if 分支中返回,編譯器報錯「缺少返回值」。
三個 if 條件可能都不成立,導致方法無返回語句執行。需在方法末尾添加默認返回或拋出異常:
public long method() {
if (cond1) return 1L;
if (cond2) return 2L;
if (cond3) return 3L;
return 0L; // 默認返回
// 或 throw new IllegalStateException("無匹配條件");
}
return 1; 合法。Java 編譯器將 int 常量自動提升為 long(隱式擴大轉換),前提是值在目標類型範圍內。
return (long) 1; 合法但多餘。更推薦使用 long 字面量後綴:return 1L;(大寫 L 避免與數字 1 混淆)。
| 來源類型 | 目標類型 | 規則 |
|---|---|---|
| int 常量 | long | 隱式提升,編譯期常量值在範圍內自動轉換 |
| int 變量 | long | 隱式提升,安全無損失 |
| long | int | 需強制轉換 (int),可能溢出 |
掌握返回值路徑完整性與類型轉換規則,避免編譯錯誤與運行時驚喜。