第三章之枚举、注解

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具有继承性

原文地址:https://www.cnblogs.com/jbrr/p/10305754.html

时间: 2024-10-21 13:18:58

第三章之枚举、注解的相关文章

第三章、枚举!很暴力

第一节.坑爹的奥数p59 穷举 3位数+3位数=3位数,1~9九个数,只能用一次. #include <stdio.h> int main() { int a,b,c,d,e,f,g,h,i,total=0; for(a=1; a<=9; a++) for(b=1; b<=9; b++) for(c=1; c<=9; c++) for(d=1; d<=9; d++) for(e=1; e<=9; e++) for(f=1; f<=9; f++) for(g=

Welcome to Swift (苹果官方Swift文档初译与注解二十三)---154~162页(第三章--集合类型)

Dictionaries (字典) 字典像是一个容器,它可以存放很多相同类型的值.每个值都有与之关联的唯一的键,键在字典里的作用,就像是每个值的身份证标识一样.与数组中的元素不同,字典里的每个元素没有 固定的循序.当你使用字典并且要查询一个值的时候,需要使用值的标识(key)才行.这就像是你在生活里使用一本字典来查找某个单词的定义一样. 在Swift中,字典能够存储的类型需要明确定义.这与OC中的NSDictionary 类和NSMutableDictionary 类很不同,OC中它们可以使用任

Welcome to Swift (苹果官方Swift文档初译与注解二十一)---140~147页(第三章--集合类型)

第三章 Collection Types (集合类型) 在Swift中,提供了两种集合类型用来存储一组值:数组和字典.数组有序的存储相同类型的值;字典存储无序的相同类型的值.字典可以通过唯一的标识(就是所说的键)来查询和访问. 在Swift中,数组和字典总是要清晰的标明他们存储数据的类型.这就意味着不可以将错误的类型插入到数组或字典中.同时也意味着你是明确了解你要遍历的数组或字典里面数据的类 型.在Swift中,集合要显式的声明类型来保证在开发中都会明确的知道它能处理的数据类型. 注意点: 在S

Welcome to Swift (苹果官方Swift文档初译与注解二十二)---148~153页(第三章--集合类型)

在数组的指定索引位置插入一个元素,可以调用数组的insert(atIndex:)方法: shoppingList.insert("Maple Syrup", atIndex: 0) // shoppingList now contains 7 items // "Maple Syrup" is now the first item in the list” 例子中的insert方法在数组的开始位置(索引为0)插入一个新的元素,元素的值是"Maple Syr

Welcome to Swift (苹果官方Swift文档初译与注解二十四)---163~170页(第三章完--第四章 流程控制)

Mutability of Collections (可变集合) 字典和数组都是在一个集合里储存多个值.如果你创建数组或字典后赋值给一个变量,那么这个集合就是可变的( mutable).这就意味着你在创建这个集合之后,依然可以改变这个集合的 大小,添加元素到集合里或者删除已有的元素.相反地,如果你创建的数组或者字典赋值给一个常量,那么这个集合就是不能修改的,也就是说字典或者数组是不可变的(immutable) 对于字典,不可变就意味着你不能替换里面已有的键值对,一个不可变的字典在它一创建出来就是

Java Persistence with MyBatis 3(中文版) 第三章 使用XML配置SQL映射器

关系型数据库和SQL是经受时间考验和验证的数据存储机制.和其他的ORM 框架如Hibernate不同,MyBatis鼓励开发者可以直接使用数据库,而不是将其对开发者隐藏,因为这样可以充分发挥数据库服务器所提供的SQL语句的巨大威力.与此同时,MyBaits消除了书写大量冗余代码的痛苦,它使使用SQL更容易. 在代码里直接嵌套SQL语句是很差的编码实践,并且维护起来困难.MyBaits使用了映射器配置文件或注解来配置SQL语句.在本章中,我们会看到具体怎样使用映射器配置文件来配置映射SQL语句.

JavaScript高级程序设计(第3版)第三章读书笔记

第三章  基本概念 ECMAScript中的一切(变量.函数名和操作符)都区分大小写. 标识符是指变量.函数.属性的名字,或者函数的参数. 标识符的组成规则是:第一个字符必须是一个字母.下划线(_)或一个美元符号($):其他字符可以是字母.下划线.美元符号或数字. ECMAScript标识符采用驼峰大小写格式. ECMAScript注释包括单行注释(//)和块级注释(/*  *  */). ECMAScript 5引入了严格模式的概念,严格模式是为JavaScript定义了一种不同的解析与执行模

Java学习笔记—第三章

第三章  标识符.关键字和数据类型 1. Java标识符和关键字:在程序设计中,通常用一个记号对变量.常量.方法和类等进行标识,这个记号称为标识符.Java语言本身使用了一些标识符,这些标识符称为Java关键字,用户在命名标识符时应该避免使用这些Java关键字,否则将导致程序无法进行编译. Java中的关键字如下: abstract 抽象 assert 断言 boolean 布尔 break 中断 byte 字节 catch 捕获 char 字符 class 类 continue 继续 defa

《从0到1》笔记 第三章 所有成功的企业都是不同的

第三章 所有成功的企业都是不同的----科技企业的创新就是为了垄断,成功的科技企业都是垄断式的. 在商界,钱就是一切,或至少是非常重要.垄断者除了想着赚钱外还有余力想其它事情,而非垄断者就不行.在完全竞争中,企业着眼于短期利益,不可能对未来进行长期规划.要想企业从每日的生成竞赛中解脱出来,唯一的方法就是:获取垄断利润. 企业成功的原因各有不同:每个垄断企业都是靠解决独一无二的问题而获得垄断地位:而企业失败的原因却相同:它们都无法逃脱竞争. 国内的垄断者,如百度,解决了中文搜索的问题,垄断了搜索的