在interface中,可以定義常數。例如:
- Action.java
package cc.openhome;
public interface Action {
    public static final int STOP = 0;
    public static final int RIGHT = 1;
    public static final int LEFT = 2;
    public static final int UP = 3;
    public static final int DOWN = 4;
} 
Java中很常見到於介面中定義這類常數,稱為列舉常數,這讓程式撰寫清晰一些。例如:
- Game.java
package cc.openhome;
public class Game {
    public static void play(int action) {
        switch(action) {
            case Action.STOP:
                System.out.println("播放停止動畫");
                break;
            case Action.RIGHT:
                System.out.println("播放向右動畫");
                break;
            case Action.LEFT:
                System.out.println("播放向左動畫");
                break;
            case Action.UP:
                System.out.println("播放向上動畫");
                break;
            case Action.DOWN:
                System.out.println("播放向下動畫");
                break;
            default:
                System.out.println("不支援此動作");
        }
    }
    public static void main(String[] args) {
        play(Action.RIGHT);
        play(Action.UP);
    }    
}  
想想看,如果將上面這個程式改為以下,哪個在維護程式時比較清楚呢?
...
public static void play(int action) {
switch(action) {
case 0: // 數字比較清楚?還是列舉常數比較清楚?
System.out.println("播放停止動畫");
break;
case 1:
System.out.println("播放向右動畫");
break;
case 2:
System.out.println("播放向左動畫");
break;
略...
default:
System.out.println("不支援此動作");
}
}
public static void main(String[] args) {
play(1); // 數字比較清楚?還是列舉常數比較清楚?
play(3);
}
...
      
      public static void play(int action) {
switch(action) {
case 0: // 數字比較清楚?還是列舉常數比較清楚?
System.out.println("播放停止動畫");
break;
case 1:
System.out.println("播放向右動畫");
break;
case 2:
System.out.println("播放向左動畫");
break;
略...
default:
System.out.println("不支援此動作");
}
}
public static void main(String[] args) {
play(1); // 數字比較清楚?還是列舉常數比較清楚?
play(3);
}
...
事實上,在interface中,也只能定義public static final的列舉常數,為了方便,也可以如下撰寫:
public interface Action {
int STOP = 0;
int RIGHT = 1;
int LEFT = 2;
int UP = 3;
int DOWN = 4;
}
      
      int STOP = 0;
int RIGHT = 1;
int LEFT = 2;
int UP = 3;
int DOWN = 4;
}
編譯器會幫你展開為public static final,所以在介面中列舉常數,一定要使用=指定值,否則就會編譯錯誤。

