复习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语言中,简单数据类型作为类的成员变量声明时自 ...
随机推荐
- odoo api介绍
odoo api修饰器介绍与应用 参考文档:https://www.cnblogs.com/kfx2007/p/6093994.html 一.one one的用法主要用于self为单一集合的情况,被o ...
- PAT 1097. Deduplication on a Linked List (链表)
Given a singly linked list L with integer keys, you are supposed to remove the nodes with duplicated ...
- Likecloud-吃、吃、吃(洛谷 1508)
题目背景 问世间,青春期为何物? 答曰:“甲亢,甲亢,再甲亢:挨饿,挨饿,再挨饿!” 题目描述 正处在某一特定时期之中的李大水牛由于消化系统比较发达,最近一直处在饥饿的状态中.某日上课,正当他饿得头昏 ...
- hdu_2046_骨牌铺方格_201311251403
骨牌铺方格 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- ASP.NET MVC 源码分析(一)
ASP.NET MVC 源码分析(一) 直接上图: 我们先来看Core的设计: 从项目结构来看,asp.net.mvc.core有以下目录: ActionConstraints:action限制相关 ...
- spring入门笔记
这是我自己学习韩顺平老师spring视频的笔记,个人认为初学spring的韩顺平老师的讲的很好,比较通俗易懂,资源地址我已经给了,可以自己配合视频看.主要介绍了ioc和aop,这也是spring框架最 ...
- N天学习一个linux命令之xz
前言 最近使用gitbook写接口文档,gitbook需要nodejs执行环境.安装nodejs时,发现安装包使用的是xz后缀,它是使用LZMA无损数据压缩算法生成的文件,压缩率很高.GNU已经内置了 ...
- JAVA大数据项目+整理的Mysql数据库32条军规
http://www.jianshu.com/users/a9b2d43bb94e/latest_articles
- HDU 4526
DP. 设状态dp[i][j]表示j辆车后还剩余i个人的花费,枚举一个车的座位k,加上剩下人数i,注意i+k不能超过n,就很容易dp了. #include <iostream> #incl ...
- vim快速操作
简明 VIM 练级攻略 vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的.下面的文章翻译自<Learn ...