傳值參數 使用Enum 優於 基本型別

傳值參數用Enum優於基本型別

傳遞參數時,如果有定義好的Enum可以使用,建議使用Enum。
如果沒有定義Enum,才使用Primitives。

Why? 傳遞參數Enum 優於 Primitives

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
定義enum
public enum CategoryType {

Home(0) {

},
Office(1) {

};

private final int unique;
public int unique() {
return unique;
}
}

Enum-CallByReference

1
2
3
4
5
getXXXByCategory(CategoryType.Home);
public void getXXXByCategory(CategoryType category) {
//共用同一份記憶體,會改到該方法上一層的category,屬於CallByReference
category = CategoryType.Office;
}

Primitives-CallByValue

1
2
3
4
5
getXXXByCategory(CategoryType.Home.unique());
public void getXXXByCategory(int category) {
//複製一份新的記憶體,不會改到該方法上一層的category,屬於CallByValue
category = 1;
}

結論

1
2
不會修改傳遞參數且有定義Enum -> 傳Enum為最佳解
需要修改傳遞參數 -> 不建議用Enum,改用Primitives