OSDN Git Service

1.6化に伴う@Overrideアノテーション対応
[mikutoga/TogaGem.git] / src / main / java / jp / sourceforge / mikutoga / corelib / SerialNumbered.java
1 /*\r
2  * serial-numbered interface\r
3  *\r
4  * License : The MIT License\r
5  * Copyright(c) 2010 MikuToga Partners\r
6  */\r
7 \r
8 package jp.sourceforge.mikutoga.corelib;\r
9 \r
10 import java.util.Comparator;\r
11 \r
12 /**\r
13  * 通し番号を持つオブジェクトの抽象化インタフェース。\r
14  */\r
15 public interface SerialNumbered {\r
16 \r
17     /** 昇順での比較子。 */\r
18     public Comparator<SerialNumbered> COMPARATOR = new SerialComparator();\r
19 \r
20     /**\r
21      * 通し番号を設定する。\r
22      * @param num 通し番号\r
23      */\r
24     void setSerialNumber(int num);\r
25 \r
26     /**\r
27      * 通し番号を返す。\r
28      * @return 通し番号\r
29      */\r
30     int getSerialNumber();\r
31 \r
32     /**\r
33      * 通し番号による比較子Comparator。\r
34      * 通し番号の昇順を定義づける。\r
35      */\r
36     public static class SerialComparator\r
37             implements Comparator<SerialNumbered> {\r
38 \r
39         /**\r
40          * コンストラクタ。\r
41          */\r
42         public SerialComparator(){\r
43             super();\r
44             return;\r
45         }\r
46 \r
47         /**\r
48          * {@inheritDoc}\r
49          * @param o1 {@inheritDoc}\r
50          * @param o2 {@inheritDoc}\r
51          * @return {@inheritDoc}\r
52          */\r
53         @Override\r
54         public int compare(SerialNumbered o1, SerialNumbered o2){\r
55             if(o1 == o2) return 0;\r
56             if(o1 == null) return -1;\r
57             if(o2 == null) return +1;\r
58 \r
59             int ser1 = o1.getSerialNumber();\r
60             int ser2 = o2.getSerialNumber();\r
61 \r
62             return ser1 - ser2;\r
63         }\r
64 \r
65     }\r
66 \r
67 }\r