1. 程式人生 > >第三章之枚舉、註解

第三章之枚舉、註解

對象 ace sum vat 不讓 ted 警告 code aso

2019-01-22 內容:枚舉、註解 一、自定義一個枚舉類
 1 public class TestSeason {
 2 
 3     public static void main(String[] args) {
 4         Season spring = Season.Spring;
 5         System.out.println(spring);
 6     }
 7 }
 8 public class Season {
 9     //將屬性定義為私有常量
10     private final String seasonName;
11     private
final String seasonDes; 12 13 //將構造器設置為私有的 14 private Season (String seasonName, String seasonDes) { 15 this.seasonName = seasonName; 16 this.seasonDes = seasonDes; 17 } 18 //利用構造器構造春夏秋冬四個對象 19 public static final Season Spring = new Season("春天","萬物復蘇"); 20 public
static final Season Summer = new Season("夏天","驕陽似火"); 21 public static final Season Fall = new Season("秋天","秋高氣爽"); 22 public static final Season Winter = new Season("冬天","白雪皚皚"); 23 //因為屬性是常量,所以不能賦值 24 public String getSeasonName() { 25 return seasonName; 26 } 27 public
String getSeasonDes() { 28 return seasonDes; 29 } 30 //重寫toString方法 31 @Override 32 public String toString() { 33 return "Season [seasonName=" + seasonName + ", seasonDes=" + seasonDes + "]"; 34 } 35 36 }

二、通過關鍵字enum定義一個枚舉類並使用方法
 1 public class TestSeason {
 2 
 3     public static void main(String[] args) {
 4         Season1 spring = Season1.Spring;
 5         System.out.println(spring);
 6         //使用values()方法將所有對象存入一個數組中
 7         Season1[] season = Season1.values();
 8         for (int i = 0; i < season.length; i++) {
 9             System.out.println(season[i]);
10         }
11         //使用valueOf(String name)方法將指定對象名的對象取出來
12         String name = "Winter";
13         Season1 winter = Season1.valueOf(name);
14         System.out.println(winter);
15     }
16 }
17 public enum Season1 {
18     Spring("春天","萬物復蘇"),
19     Summer("夏天","驕陽似火"),
20     Fall("秋天","秋高氣爽"),
21     Winter("冬天","白雪皚皚");
22     
23     private final String seasonName;
24     private final String seasonDes;
25     
26     private Season1 (String seasonName, String seasonDes) {
27         this.seasonName = seasonName;
28         this.seasonDes = seasonDes;
29     }
30 
31     public String getSeasonName() {
32         return seasonName;
33     }
34     public String getSeasonDes() {
35         return seasonDes;
36     }
37 
38     @Override
39     public String toString() {
40         return "Season1 [seasonName=" + seasonName + ", seasonDes=" + seasonDes + "]";
41     }
42     
43 }

三、讓枚舉類實現一個接口,並且讓枚舉類的每個對象都重寫接口中的抽象方法
 1 public class TestSeason {
 2 
 3     public static void main(String[] args) {
 4         Season1 spring = Season1.Spring;
 5         System.out.println(spring);
 6         //使用values()方法將所有對象存入一個數組中
 7         Season1[] season = Season1.values();
 8         for (int i = 0; i < season.length; i++) {
 9             System.out.println(season[i]);
10         }
11         //使用valueOf(String name)方法將指定對象名的對象取出來
12         String name = "Winter";
13         Season1 winter = Season1.valueOf(name);
14         System.out.println(winter);
15         //調用接口中的方法
16         spring.Show();
17     }
18 }
19 public interface Show {
20     void Show();
21 }
22 public enum Season1 implements Show {
23     Spring("春天","萬物復蘇"){
24         @Override
25         public void Show() {
26             System.out.println("春天:"+Spring.toString());
27         }
28     },
29     Summer("夏天","驕陽似火"){
30         @Override
31         public void Show() {
32             System.out.println("夏天:"+Spring.toString());
33         }
34     },
35     Fall("秋天","秋高氣爽"){
36         @Override
37         public void Show() {
38             System.out.println("秋天:"+Spring.toString());
39         }
40     },
41     Winter("冬天","白雪皚皚"){
42         @Override
43         public void Show() {
44             System.out.println("冬天:"+Spring.toString());
45         }
46     };
47     
48     private final String seasonName;
49     private final String seasonDes;
50     
51     private Season1 (String seasonName, String seasonDes) {
52         this.seasonName = seasonName;
53         this.seasonDes = seasonDes;
54     }
55 
56     public String getSeasonName() {
57         return seasonName;
58     }
59     public String getSeasonDes() {
60         return seasonDes;
61     }
62 
63     @Override
64     public String toString() {
65         return "Season1 [seasonName=" + seasonName + ", seasonDes=" + seasonDes + "]";
66     }
67 }

四、JDK常用註釋
  @Override:顯示表明方法重寫
  @Deprecated:表明方法或者類過時,但依舊可以使用
  @SuppressWarnings:抑制編譯器警告,即不讓編譯器發出警告
五、自定義註解
  使用@interface
六、元註解
  釋義:修飾註解的註解
  @Retention:*用來指定某個Annotation存在的時間長短
       *使用格式:@Retention(RetentionPolicy.成員變量)
            @Retention(RetentionPolicy.SOURCE)表明該註釋在編譯時不會保留
           @Retention(RetentionPolicy.CLASS)表明在編譯時被記錄在.class文件中,運行不會保留,這是默認值
            @Retention(RetentionPolicy.RUNTIME)表明在編譯時被記錄在.class文件中,運行時也保留,程序可以通過反射獲取該註釋
  @Target:*用來指定某個Annotation能修飾的地方,默認是所有地方都能修飾
      *使用格式@Target(地方),地方可以是FIELD,METHOD,CONSTRUCTION,TYPE,LOCAL_VARIABLE,PACKAGE,PARAMETER,ANNOTATION_TYPE中的任意個
  @Documented:*用來指定某個Annotation在生成文檔的時候會被保留
        *格式:@Documented
  @Inherited:*用來指定某個Annotation具有繼承性

第三章之枚舉、註解