第三章之枚舉、註解
阿新 • • 發佈:2019-01-22
對象 ace sum vat 不讓 ted 警告 code aso 2019-01-22
內容:枚舉、註解
一、自定義一個枚舉類
@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具有繼承性
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 privatefinal 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 publicstatic 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 publicString 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具有繼承性
第三章之枚舉、註解