傳值參數用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
|