今天想來聊一下關於用Java的List陣列完成Getter-Setter這件事(`・ω・´)+

如果你上網google:

java setter getter

java setter getter example

java setter getter List

等等以下關鍵字的話

我常常覺得跑出來的東西有時候真的很不盡人意

大多不是教得太難,不然就是理論講太多或是根本就是在探討該不該使用getter-setter (´・_・`)

對我這種菜逼八而言其實我想知道的並不是這些

而是到底如何使用啊(╯=▃=)╯︵┻━┻

而且老實說...就算結論是沒必要使用但是也不代表你不用學呀...((個人思想

如果各位有機會看一些大神的Source code的話

有時可以發現這些大神多數會使用之

尤其是在資料庫操作上更為明顯

有鑑於此這就是今天想特別發這篇文章的起因(・∀・)

今天的東西不會太多,目標就是手把手教你會使用Getter-Setter的陣列應用

加油吧~

阿對了Github在這

https://github.com/thumbb13555/GetterSetterExample


1.環境

因為這次的重點是著重在"如何使用Getter-Setter",因此這次我是用IntelliJ撰寫

省去了介面那部份的問題~

那這次的java類別有兩個

一個當然是主類別不用講,以及要在創建一個Getter-Setter儲存的類別

截圖 2020-03-07 下午4.41.59

我將它命名為GetterSetterExample

 

2.設置Getter-Setter環境

2-1 設置全域變數

首先來架設Getter-Setter環境

點開GetterSetterExample.java

先在裡面定義所需要的全域變數

我們這次範例要用的四個變數為

Name->String

age->int

score->float

isStudent->boolean

故,先在內容的全域變數輸入他們

截圖 2020-03-07 下午4.48.39

public class GetterSetterExample {
    private String name;
    private int age;
    private float score;
    private boolean isStudent;
}

2-2 設置Getter-Setter

再來就是加入getter-setter

其實真的要解釋的話就是設置取得值的部分(getter)以及設置給予值的部分(setter)

在Java的編譯器中,它已經很貼心地幫你做好自動設定了

只要在一個空白處按下⌘+N(Mac版)alt+insert(Window)就會出現這個視窗

截圖 2020-03-07 下午1.49.19

選擇Getter and Setter

截圖 2020-03-07 下午1.49.35

加入全部

接著編輯器就會自動幫你完成囉!(・ω・)b

public class GetterSetterExample {
    private String name;
    private int age;
    private float score;
    private boolean isStudent;


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public float getScore() {
        return score;
    }

    public void setScore(float score) {
        this.score = score;
    }

    public boolean isStudent() {
        return isStudent;
    }

    public void setStudent(boolean student) {
        isStudent = student;
    }
}

這是目前的樣子

 

2-3 加入建構子

設置Getter-Setter的最後一步就是加入建構子

這一部非常重要⚠️

如果沒有建構子做為宣告,那陣列根本就不會成立(´υ`)

一樣按下⌘+N(Mac版)alt+insert(Window)

選擇Constructor

截圖 2020-03-07 下午1.57.40

四個都要

截圖 2020-03-07 下午5.24.19

這樣就完成一個輸入四個變數的建構子

截圖 2020-03-07 下午5.25.21

而我通常都會加入一個空的建構子跟一個有東西的建構子

所以再加入一個空的建構子

一樣按下⌘+N(Mac版)alt+insert(Window)

點選Constructor

截圖 2020-03-07 下午1.57.40

這次選底下的Select None

截圖 2020-03-07 下午5.27.07

就建立了一個空建構子了!

到這邊整個Getter-Setter就完成囉(•ө•)♡

GetterSetterExample.java長這樣

public class GetterSetterExample {
    private String name;
    private int age;
    private float score;
    private boolean isStudent;


    public GetterSetterExample() {}

    public GetterSetterExample(String name, int age, float score, boolean student) {
        this.name = name;
        this.age = age;
        this.score = score;
        this.isStudent = student;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public float getScore() {
        return score;
    }

    public void setScore(float score) {
        this.score = score;
    }

    public boolean isStudent() {
        return isStudent;
    }

    public void setStudent(boolean student) {
        isStudent = student;
    }
}

3.操作

回到Main.java

最後就是要來利用這個Getter-Setter操作陣列

首先宣告一個List陣列並包裹剛剛的類別

public static void main(String[] args) {
    
     List<GetterSetterExample> mList = new ArrayList<>();
     
}

3-1 新增一筆資料

新增資料有兩個做法

我自己是比較推崇第一個做法啦 (´・з・)

雖然要co的東西可能會比較多一點

但是程式的可讀性比較高

(此外順便新增輸出部分)

public static void main(String[] args) {
        List<GetterSetterExample> mList = new ArrayList<>();

        mList.add(new GetterSetterExample());
        mList.get(0).setName("Jack");
        mList.get(0).setAge(18);
        mList.get(0).setScore(75.3f);
        mList.get(0).setStudent(true);


        for (int i=0;i<mList.size();i++){
            System.out.println("========================");
            System.out.println("姓名:"+mList.get(i).getName());
            System.out.println("年齡:"+mList.get(i).getAge());
            System.out.println("點數:"+mList.get(i).getScore());
            System.out.println("是否為學生:"+mList.get(i).isStudent());
        }
        System.out.println("========================");
    }

這時候可以試著輸出看看,應該就會看到資料了

 

接著是第二種做法~

還記得我們在新增建構子時有新增兩種嗎?

沒錯這邊使用的就是另一個建構子作為接口

作法如下

public static void main(String[] args) {
        List<GetterSetterExample> mList = new ArrayList<>();

        mList.add(new GetterSetterExample());
        mList.get(0).setName("Jack");
        mList.get(0).setAge(18);
        mList.get(0).setScore(75.3f);
        mList.get(0).setStudent(true);

        mList.add(new GetterSetterExample("Sam",20,96,false));
        mList.add(new GetterSetterExample("Eddies",15,62,true));

        mList.get(2).setAge(16);
        for (int i=0;i<mList.size();i++){
            System.out.println("========================");
            System.out.println("姓名:"+mList.get(i).getName());
            System.out.println("年齡:"+mList.get(i).getAge());
            System.out.println("點數:"+mList.get(i).getScore());
            System.out.println("是否為學生:"+mList.get(i).isStudent());
        }
        System.out.println("========================");
    }

 

這時候來看輸出,就可以看到這樣的輸出囉

========================
姓名:Jack
年齡:18
點數:75.3
是否為學生:true
========================
姓名:Sam
年齡:20
點數:96.0
是否為學生:false
========================
姓名:Eddies
年齡:16
點數:62.0
是否為學生:true
========================

3-2 修改一筆資料

這時候我們的資料有三筆麻(・ωー)~☆

那要如何修改資料?其實跟陣列是一樣的

具體如下:如果我要改變第二筆資料(Sam)的年齡,修正為19

那就在他下面加入這行

mList.get(1).setAge(19);

來看輸出

========================
姓名:Jack
年齡:18
點數:75.3
是否為學生:true
========================
姓名:Sam
年齡:19
點數:96.0
是否為學生:false
========================
姓名:Eddies
年齡:16
點數:62.0
是否為學生:true
========================

事就這樣成了,甚好(´・з・)


結語

"只要這東西被創造出來,必然有它存在意義"

這個觀念一直是我的中心理念

網路上對於要不要用Getter-Setter很多人做了不少分析

但是我覺得最重要的部分是

他的可讀性很高!

他的可讀性很高!

他的可讀性很高!

與Getter-Setter所替代的,在我實際應用中,最接近的莫過於

Array<HashMap<String,String>>用法了

簡單來說就是一種再ArrayList內包入HashMap的方法

但是若不考慮製作JSON陣列輸出的話

實際上用getter-Setter的確可讓程式更好維護(´υ`)

而且若剛好DataBase欄位是一個不可視狀態時

如果架構了Getter-Setter也會幫助DB的欄位維護

(但前提是接手你的人必須也要懂....)

關於DB欄位可視化及DB開發的相關文章在這,大家可以去看看

http://thumbb13555.pixnet.net/blog/post/317439792-android_studio_sqlite_stetho

那今天文章到這,希望對大家有幫助

喜歡我的文章可以將我的文章納入書籤喔~

thank-you-meme-puppy

arrow
arrow
    創作者介紹
    創作者 碼農日常 的頭像
    碼農日常

    碼農日常大小事

    碼農日常 發表在 痞客邦 留言(1) 人氣()