1. 程式人生 > >Java中定義常量(Constant) 的幾種方法

Java中定義常量(Constant) 的幾種方法

常量使用目的

  1. 為什麼要將常亮提取出來?         常亮提取出來有利於程式碼閱讀,而且下次再做這種判斷不用手寫或複製,直接通過常量類就能得到,能夠避免有的地方是username,有的地方是name來判斷同一個邏輯含義相同變數問題。不過我覺得提取出來並不會有利於程式碼效能提升,因為常量分配在記憶體的常亮池中,所以記憶體不會出現多個相同常量字串。總的來說提取常量主要是為了避免魔法數字和提高程式碼可讀性。
  2. 提取出來怎麼定義,定義在interface中,還是class中?有什麼區別?         常亮定義在final的class中,防止被其它類繼承和例項化。定義在interface中性質也是一樣,static final屬性。但是interface看起來就是會被繼承的。

interface中定義常量

採用介面(Interface)的中變數預設為static final的特性。

public interface ConstantInterface {  
    String SUNDAY = "SUNDAY";  
    String MONDAY = "MONDAY";  
    String TUESDAY = "TUESDAY";  
    String WEDNESDAY = "WEDNESDAY";  
    String THURSDAY = "THURSDAY";  
    String FRIDAY = "FRIDAY";  
    String SATURDAY =
"SATURDAY"; }

Enum定義常量

enum ConstantEnum {  
        SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY  
    }

普通類中定義常量

採用了在普通類中使用static final修飾變數的方法。

public class ConstantClassField {  
        public static final String SUNDAY = "SUNDAY";  
        public static final String MONDAY =
"MONDAY"; public static final String TUESDAY = "TUESDAY"; public static final String WEDNESDAY = "WEDNESDAY"; public static final String THURSDAY = "THURSDAY"; public static final String FRIDAY = "FRIDAY"; public static final String SATURDAY = "SATURDAY"; }

也可以使用get方法

public class ConstantClassFunction {  
        private static final String SUNDAY = "SUNDAY";  
        private static final String MONDAY = "MONDAY";  
        private static final String TUESDAY = "TUESDAY";  
        private static final String WEDNESDAY = "WEDNESDAY";  
        private static final String THURSDAY = "THURSDAY";  
        private static final String FRIDAY = "FRIDAY";  
        private static final String SATURDAY = "SATURDAY";  
        public static String getSunday() {  
            return SUNDAY;  
        }  
        public static String getMonday() {  
            return MONDAY;  
        }  
        public static String getTuesday() {  
            return TUESDAY;  
        }  
        public static String getWednesday() {  
            return WEDNESDAY;  
        }  
        public static String getThursday() {  
            return THURSDAY;  
        }  
        public static String getFirday() {  
            return FRIDAY;  
        }  
        public static String getSaturday() {  
            return SATURDAY;  
        }  
    }

final class定義常量

public final class ConstantClassField {  
       public static final String SUNDAY = "SUNDAY";  
       public static final String MONDAY = "MONDAY";  
       public static final String TUESDAY = "TUESDAY";  
       public static final String WEDNESDAY = "WEDNESDAY";  
       public static final String THURSDAY = "THURSDAY";  
       public static final String FRIDAY = "FRIDAY";  
       public static final String SATURDAY = "SATURDAY";  
   }