普通 Java 物件(POJO)

Java 的資料型別與例外狀況

Jim White

Java Developer

資料型別與例外處理概覽

  • 第 1 章
    • 普通(一般)Java 物件
    • 包裝類別
    • 使用套件
  • 第 2 章
    • Collections Framework
  • 第 3 章
    • 例外與例外處理

Java 如何處理資料、問題與狀況?本課程將說明。

1 Photo by Mika Baumeister on Unsplash
Java 的資料型別與例外狀況

作為資料結構的 Java 物件

  • Java 物件用來儲存與組織資料。
    • 由自訂類別建立
  • 在欄位中儲存資料
    • 就像應用程式的「手提箱」
  • 稱為 POJO
    • Plain ordinary Java object
    • 或 Plain old Java object
  • 簡單的 Java 物件用來承載與傳遞資料
    • 遵守一些規則
    • 不包含任何邏輯

Java 物件(POJO)就像手提箱,用來在應用程式中承載與搬運資料。

1 Photo by Caroline Selfors on Unsplash
Java 的資料型別與例外狀況

Getters 與 Setters

  • Getter 與 Setter 為 public
    • 欄位為 private
  • Getter/Setter 保護 POJO 內的資料
    • 強化封裝
  • 隱藏底層欄位的實作細節
Java 的資料型別與例外狀況

POJO 類別指引

  • POJO 類別「應該」:
    • 是 public
    • 為所有欄位提供 public 的 getters/setters
      • 欄位應為 private
    • 具有預設(無參數)建構子

POJO 類別應遵循這些規則

1 Photo by Anastasiya Badun on Unsplash
Java 的資料型別與例外狀況

POJO 的禁忌

  • POJO 類別「不應該」:
    • 綁定特定框架
    • 繼承其他類別
    • 實作任何介面
      • 某些情況除外:Serializable
    • 包含商業邏輯
  • 以上規則有時會放寬
    • 盡量保持 POJO 簡單

POJO 類別不應具有這些特性

1 Photo by Anastasiya Badun on Unsplash
Java 的資料型別與例外狀況

Getters

  • Getter 方法命名
    • 以「get」開頭(boolean 用「is」)
    • 以欄位名稱結尾
    • lower camel case
    • 範例:get + make = getMake
  • 不帶參數
  • 回傳欄位值
  • Getter 可隱藏欄位實作細節
    private String make;

    public String getMake() {
        return make;
    }
    private short on;

    public boolean isOn() {
      if (on == 0) {
        return false;
      } else {
        return true;
      }
    }
Java 的資料型別與例外狀況

Setters

  • Setter 方法命名
    • 以「set」開頭,欄位名稱結尾
    • lower camel case
    • 範例:set + make = setMake
  • 接受單一參數—欄位的新值
    • this 區分欄位與參數
  • 回傳 void(無回傳)
  • 可檢查資料有效性
    private String make;

    public void setMake(String make) {
        this.make = make;
    }
    private int age;

    public void setAge(int age) {
      if ((age >= 0) && (age <= 120)) {
        this.age = age;
      }
    }
Java 的資料型別與例外狀況

POJO 範例

  • Public 類別
  • Private 欄位
  • Public getters/setters
    • Getter 回傳欄位值
    • Setter 設定欄位值
  • 預設/無參數建構子
public class Car {   // POJO class is public
    private String model;  // Fields are private
    private int year;

    // Default no arg constructor

    // Public getters to access POJO data
    public String getModel() {
        return model;
    }
    public int getYear() {
        return year;
    }
    // Public setters to set POJO fields
    public void setModel(String model) {
        this.model = model;
    }
    public void setYear(int year) {
        this.year = year;
    }
}
Java 的資料型別與例外狀況

一起來練習吧!

Java 的資料型別與例外狀況

Preparing Video For Download...