复习java第五天(枚举、Annotation(注释) 概述)
一、枚举
传统的方式:
- public class Season {
- //1、因为类的对象是固定的,所以类的属性是常量
- public final String name;
- public final String desc;
- //2、因为类的对象是有限个,所以不能在类的外部创建对象,构造器必须私有
- private Season(String name,String desc){
- this.name = name;
- this.desc = desc;
- }
- //3、在类的内部创建对象,但要在类的外部能够访问到该对象,而且还不能修改。
- public static final Season SPRING = new Season("春天","春风又绿江南岸");
- public static final Season SUMMER = new Season("夏天","映日荷花别样红");
- public static final Season FALL = new Season("秋天","秋水共长天一色");
- public static final Season WINTER = new Season("冬天","窗寒西岭千秋雪");
- public String getName() {
- return name;
- }
- public String getDesc() {
- return desc;
- }
- @Override
- public String toString() {
- return "Season [name=" + name + ", desc=" + desc + "]";
- }
- }
Season类
- public class TestSeason {
- public static void main(String[] args) {
- Season SPRING = Season.SPRING;
- System.out.println(SPRING);
- }
- }
TestSeason类
现在的方式:

- public interface DateInfo {
- public String getDateInfo();
- }
DateInfo接口
- public enum Season2 implements DateInfo {
- SPRING("春天","春风又绿江南岸"){
- @Override
- public String getDateInfo() {
- return "2-5";
- }
- },
- SUMMER("夏天","映日荷花别样红"){
- @Override
- public String getDateInfo() {
- return "5-8";
- }
- },
- FALL("秋天","秋水共长天一色"){
- @Override
- public String getDateInfo() {
- return "8-11";
- }
- },
- WINTER("冬天","窗寒西岭千秋雪"){
- @Override
- public String getDateInfo() {
- return "11-2";
- }
- },;
- private String name;
- private String desc;
- private Season2(String name,String desc){
- this.name = name;
- this.desc = desc;
- }
- public String getName() {
- return name;
- }
- public String getDesc() {
- return desc;
- }
- /* @Override 改为利用匿名内部类重写的方法更酷些
- public String getDateInfo() {
- System.out.println(this.toString().equals("SPRING"));
- return null;
- } */
- }
Season2类继承接口DateInfo
- public class TestSeason {
- public static void main(String[] args) {
- // Season SPRING = Season.SPRING;
- // System.out.println(SPRING);
- // System.out.println(Season2.SPRING);
- for(Season2 s:Season2.values()){
- // System.out.println(s);
- // System.out.println(s.toString().equals("SPRING"));
- System.out.println(s.getDateInfo());
- }
- String str = "WINTER";
- Season2 s = Season2.valueOf(Season2.class, str);
- System.out.println(s.getName()+" "+s.getDesc());
- }
- }
TestSeason测试类
二、Annotation(注释)
1、概述:
2、基本的 Annotation:
3、自定义 Annotation:

- import java.lang.annotation.ElementType;
- import java.lang.annotation.Target;
- /**
- * 1. 使用 @interface 定义注解
- * 2. 使用类似于接口方法声明的方式来定义注解的属性: 其中返回值称为属性的类型, 方法名为属性的名称.
- *
- */
- @Target(value={ElementType.METHOD, ElementType.TYPE})
- public @interface HelloAnnotation {
- public String name() default "atguigu";
- }
@interface与@Target用法
- public class TestAnnotation {
- @SuppressWarnings("unused")
- public static void main(String[] args) {
- A a = new A();
- a.method2();
- String str = "abc";
- }
- }
- @HelloAnnotation(name="abc")
- class A{
- @HelloAnnotation()
- void method1(){}
- @Deprecated
- void method2(){}
- }
- class B extends A{
- @Override
- void method1(){}
- }
TestAnnotation类
复习java第五天(枚举、Annotation(注释) 概述)的更多相关文章
- JAVA提高五:注解Annotation
今天我们学习JDK5.0中一个非常重要的特性,叫做注解.是现在非常流行的一种方式,可以说因为配置XML 比较麻烦或者比容易查找出错误,现在越来越多的框架开始支持注解方式,比如注明的Spring 框架, ...
- [Java核心技术]五-继承(枚举类)
####Java枚举类型(enum) 枚举类型都是继承了Enum类(是一个抽象类)的一个类,我们可以向enum类中添加方法和变量等.编译再反编译可以看到枚举类型对应的类的内容. 每个枚举常量都对应一个 ...
- java JDK8 学习笔记——第18章 自定义泛型、枚举与注释
第十八章 自定义泛型.枚举与注释 18.1 自定义泛型 泛型定义: (1)仅定义在方法上的泛型语法 (2)用来限制泛型可用类型的extends与super关键字(3)?类型通配字符的使用 18.1.1 ...
- 和朱晔一起复习Java并发(五):并发容器和同步器
本节我们先会来复习一下java.util.concurrent下面的一些并发容器,然后再会来简单看一下各种同步器. ConcurrentHashMap和ConcurrentSkipListMap的性能 ...
- Java学习笔记:注解Annotation
annotation的概念 In the Java computer programming language, an annotation is a form of syntactic metada ...
- 【java】详解java中的注解(Annotation)
目录结构: contents structure [+] 什么是注解 为什么要使用注解 基本语法 4种基本元注解 重复注解 使用注解 运行时处理的注解 编译时处理的注解 1.什么是注解 用一个词就可以 ...
- 【转载:java】详解java中的注解(Annotation)
目录结构: contents structure [+] 什么是注解 为什么要使用注解 基本语法 4种基本元注解 重复注解 使用注解 运行时处理的注解 编译时处理的注解 1.什么是注解 用一个词就可以 ...
- java基础源码 (3)--Annotation(注解)
借鉴博客地址:https://www.cnblogs.com/skywang12345/p/3344137.html /** * The common interface extended by al ...
- java的五种数据类型解析
不知道大家对java的简单数据类型是否了解,下面针对Java的五种类型简单数据类型表示数字和字符,进行详细的讲解和分析. 一.简单数据类型初始化 在Java语言中,简单数据类型作为类的成员变量声明时自 ...
随机推荐
- 30.IK中文分词器的安装和简单使用
在之前我们学的都是英文,用的也是英文的standard分词器.从这一节开始,学习中文分词器.中国人基本上都是中文应用,很少是英文的,而standard分词器是没有办法对中文进行合理分词的,只是将每个中 ...
- 百度编辑器ueditor1.4.3配置记录
我从官网下载的php文件,但是图片上传不能用,后来查找资料,打开ueditor下的php/controller.php,(其他环境选对应的文件夹)把时区设置按如下改个字母大小写,再打开该文件就正确返回 ...
- Redis学习总结(1)——Redis内存数据库详细教程
1.redis是什么 2.redis的作者何许人也 3.谁在使用redis 4.学会安装redis 5.学会启动redis 6.使用redis客户端 7.redis数据结构 – 简介 8.redis数 ...
- Sencha Touch中 xclass和xtype区别
1.xclass 就是 Ext.create(xclass) 和 xtype一样的性质,不一定非要是自己创建的. 2.xtype是xclass的简称. 3.使用xtype前,你要new的对象,先要re ...
- 嵌入式linux和嵌入式android系统有什么区别和联系?
转自:http://bbs.eeworld.com.cn/thread-430437-1-1.html 这个问题很多人问,尤其是初入嵌入式的菜鸟.其实大家都认为android是java,已经不是lin ...
- Linux进程线程学习笔记:运行新程序
Linux进程线程学习笔记:运行新程序 周银辉 在上一篇中我们说到,当启动一个新进程以后,新进程会复制父进程的大部份上下 ...
- 记一次ruby的安装
1,下载rubyinstall 安装包及devkit包 登陆网站 :http://rubyinstaller.org/downloads/ 安装rubyinstall包时添加到环境变量 2,安装完in ...
- Oracle数据库点滴
分页查询: SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= 40)W ...
- firedac的TFDStoredProc动态创建并调用存储过程
1)中间件执行存储过程 sp.Close; sp.StoredProcName := procName; sp.Prepare; // 生成存储过程的参数列表,无任何OUTPUT的存储过程,也会自动 ...
- HDU 5467
第一次写LCT,各种模板加入...以后都只遇到有新意的题目再更新了 这道题就是LCT,但是,难在一个回退的操作.这时,可以通过改变执行顺序,先把要回退后再做的操作先执行了,再回退到之前的执行.这时,建 ...