枚举:自定义枚举类

使用Enum关键字定义的枚举类

注解:jdk内置的基本注解类型(3个)

自定义注解类型

对注解进行注解(元注解4个)

利用反射获取注解信息(反射部分涉及)

自定义枚举类:

TestSeason 
package com.aff.Gen;
//自定义的枚举类
public class TestSeason {
public static void main(String[] args) {
Season spring = Season.SPRING;
System.out.println(spring);
spring.show();
System.out.println(spring.getSeasonName());
}
} // 枚举类
class Season {
// 1. 提供类的属性,声明private final
private final String seasonName;
private final String seasonDesc; // 2.声明为final的属性,在构造器中初始化
public Season(String seasonName, String seasonDesc) {
super();
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
} // 3.通过公共的方法来调用属性
public String getSeasonName() {
return seasonName;
} public String getSeasonDesc() {
return seasonDesc;
} // 4.创建枚举类的对象 president
public static final Season SPRING = new Season("spring", "春暖花开");
public static final Season SUMMER = new Season("Summer", "夏日炎炎");
public static final Season AUTUMN = new Season("Autumn", "秋高气爽");
public static final Season WINTER = new Season("Winter", "白雪皑皑"); @Override
public String toString() {
return "Season [seasonName=" + seasonName + ", seasonDesc=" + seasonDesc + "]";
} public void show() {
System.out.println("这是一个季节");
}
}

使用Enum关键字定义的枚举类:

TestSeasonEnum

package com.aff.Gen;

//使用Enum关键字定义的枚举类
/* 常用的方法: values() :以数组的形式返回整个枚举类的对象。
valuesOf(String name) : 传入字符串,返回枚举类的对象
如何让枚举类实现接口: 可以让不同枚举类的对象调用被重写的抽象方法,执行的效果不同
相当于让每一个对象从重写抽象方法;
*/
public class TestSeasonEnum {
public static void main(String[] args) {
Season1 spring = Season1.SPRING;
System.out.println(spring);//Season1 [seasonName=spring, seasonDesc=春暖花开]
spring.show();//c春天在那
System.out.println(spring.getSeasonName());//spring //values()
Season1[] season = Season1.values();
for(int i = 0;i<season.length;i++){
System.out.println(season[i]);
} //valuesOf(String name); 要求传入的形参name是枚举类的对象的名字
//否则,报 java.lang.IllegalArgumentException
String str = "SPRING";
Season1 s = Season1.valueOf(str);
System.out.println(s);//Season1 [seasonName=spring, seasonDesc=春暖花开]
s.show();//c春天在那 //枚举类:线程的state
Thread.State[] state = Thread.State.values();
for(int i = 0;i<state.length;i++){
System.out.println(state[i]);
}
}
}
interface Info{
void show();
} // 枚举类
enum Season1 implements Info{
SPRING ("spring", "春暖花开"){
public void show() {
System.out.println("c春天在那");
}
},
SUMMER ("Summer", "夏日炎炎"){
public void show() {
System.out.println("这是一个夏节");
}
},
AUTUMN ("Autumn", "秋高气爽"){
public void show() {
System.out.println("这是一个秋节");
}
},
WINTER ("Winter", "白雪皑皑"){
public void show() {
System.out.println("这是一个冬节");
}
}; private final String seasonName;
private final String seasonDesc; private Season1(String seasonName, String seasonDesc) {
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
} public String getSeasonName() {
return seasonName;
} public String getSeasonDesc() {
return seasonDesc;
} @Override
public String toString() {
return "Season1 [seasonName=" + seasonName + ", seasonDesc=" + seasonDesc + "]";
} /* public void show() {
System.out.println("这是一个季节");
}*/
}

注解:

package com.aff.Gen;
import java.util.ArrayList;
import java.util.List;
/*
注解
1.jdk提供的常用的注解
@Override:限定重写父类方法,该注释只能用于方法
@Deprecated:用于表示某个程序 (类,方法等) 已过时
@SuppressWarnings:抑制编译器警告
2.如何自定义一个注解
3.元注解
1>@Retention:
|----只能用于修饰一个 Annotation 定义, 用于指定该 Annotation 可以保留多长时间,
@Rentention 包含一个 RetentionPolicy 类型的成员变量
使用 @Rentention 时必须为该 value 成员变量指定值:
|---- RetentionPolicy.SOURCE: 编译器直接丢弃这种策略的注释
|---- RetentionPolicy.CLASS: 编译器将把注释记录在 class 文件中.
当运行 Java 程序时, JVM 不会保留注解。 这是默认值
|---- RetentionPolicy.RUNTIME:编译器将把注释记录在 class 文件中.
当运行 Java 程序时, JVM 会保留注释. 程序可以通过反射获取该注释
2>@Target
|---- 用于修饰 Annotation 定义, 用于指定被修饰的 Annotation 能用于修饰哪些程序元素.
@Target 也包含一个名为 value 的成员变量.
3>@Documented
|---- 用于指定被该元 Annotation 修饰的 Annotation 类将被 javadoc 工具提取成文档.
定义为Documented的注解必须设置Retention值为RUNTIME。 4>@Inherited
|---- 被它修饰的 Annotation 将具有继承性.
如果某个类使用了被 @Inherited 修饰的 Annotation,
则其子类将自动具有该注解
实际应用中,使用较少
*/
public class TestAnnotation {
public static void main(String[] args) {
Person p = new Student();
p.walk(); @SuppressWarnings({ "rawtypes", "unused" })
List list = new ArrayList();
}
}
@MyAnnotation("afangfang")
class Student extends Person {
@Override
public void walk() {
System.out.println("学生走轮");
}
@Override
public void eat() {
System.out.println("学生吃饭");
}
} @Deprecated
class Person {
String name;
int age;
public Person() {
super();
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public void walk() {
System.out.println("走轮");
}
public void eat() {
System.out.println("吃饭");
}
}

自定义注解:

MyAnnotation

package com.aff.Gen;

//自定义的注解
public @interface MyAnnotation {
String value() default "hello"; }

枚举&注解的更多相关文章

  1. Java 枚举&注解

    枚举类 如何自定义枚举类 JDK1.5之前需要自定义枚举类 JDK 1.5 新增的 enum 关键字用于定义枚举类 若枚举只有一个成员, 则可以作为一种单例模式的实现方式 //枚举类 class Se ...

  2. 在Android中使用枚举注解而不是枚举

    Enums often require more than twice as much memory as static constants. You should strictly avoid us ...

  3. Java笔记--枚举&注解

    1.自定义枚举类的实现,例: class Season{ //1,提供类的属性,声明为rivate final private final String name; private final Str ...

  4. hibernate的枚举注解@Enumerated

    @Enumerated(value=EnumType.ORDINAL)采用枚举类型的序号值与数据库进行交互, 此时数据库的数据类型需要是数值类型,例如在实际操作中 CatTest ct = new C ...

  5. 利用注解和反射,将Bean枚举字段的值填入相应的字段中,并转化为fastjson返回前台

    需求:需要将枚举类型的字段例如enable(是否启用)转化为enable:1,enableName:是.这种形式返回给前台. 思路:在bean字段上加上枚举类型的注解,通过字段的值和枚举类反射获取枚举 ...

  6. 关于Java中枚举Enum的深入剖析

    在编程语言中我们,都会接触到枚举类型,通常我们进行有穷的列举来实现一些限定.Java也不例外.Java中的枚举类型为Enum,本文将对枚举进行一些比较深入的剖析. 什么是Enum Enum是自Java ...

  7. JavaSE复习(八)反射和注解

    反射 框架设计的灵魂 框架:半成品软件.可以在框架的基础上进行软件开发,简化编码 反射:将类的各个组成部分封装为其他对象,这就是反射机制 好处: 可以在程序运行过程中,操作这些对象. 可以解耦,提高程 ...

  8. JAVA注解引发的思考

    自从JDK5開始Java開始添加了对元数据(MetaData)的支持,也就是注解(Annotation),到JDK7时已经有四种基本注解,新添加了一种@SafeVarargs. @Override注解 ...

  9. java注解使用总结

    2005年,sun公司推出了jdk1.5,同时推出的注解功能吸引了很多人的目光,使用注解编写代码,能够减轻java程序员繁琐配置的痛苦. 使用注解可以编写出更加易于维护,bug更少的代码. 注解是什么 ...

随机推荐

  1. 重新认识Java注解

    重新认识Java注解 今天Debug看源码的时候,无意间看到这么个东西 首先承认我的无知,看到这个我很惊诧. 也勾起了我的好奇心,于是有了这篇认知记录. 下面就来重新认识下注解吧! 注解的本质 关于运 ...

  2. 配置Ansible加速

    下载安装包 wget https://files.pythonhosted.org/packages/source/m/mitogen/mitogen-0.2.7.tar.gz tar axf mit ...

  3. Java——Java连接Jira,创建、修改、删除工单信息

    还不了解Jira是什么的同学可以看一下这篇文章:https://www.cnblogs.com/wgblog-code/p/11750767.html 本篇文章主要介绍如何使用Java操作Jira,包 ...

  4. 补一下昨天的博客 J - Sabotage 网络流

    题目链接:https://vjudge.net/contest/299467#problem/J 这个题目是一个裸的最小割问题,就不多赘述了. #include <cstdio> #inc ...

  5. Coursera课程笔记----P4E.Capstone----Week 6&7

    Visualizing Email Data(Week 6&7) code segment gword.py import sqlite3 import time import zlib im ...

  6. 2018-06-19 Javascript 基础2

    js变量类型测试:typeof()->五种 (number,string,boolean,object,undefined): instanceof->检查某个对象是否是某个构造器产生的 ...

  7. 比较接口(Comparable ,Comparator)及流的聚合操作

    Comparable 及 Comparator 的区别 Comparable 一个内比较器,类可以和自己比较 compareTo() 自然比较方法 public interface Comparabl ...

  8. ESXI 6.5利用Centos7重置root密码

    ESXI6.5宿主机,很久没有登录,再次登录的时候,发现忘记root密码了 1.先将刻录一个CentOS7的启动光盘或U盘,并将服务器的启动项修改为光盘 2.保存BIOS重启后,选择Troublesh ...

  9. 【Leetcode】1340. Jump Game V 【动态规划/记忆性搜索】

    Given an array of integers arr and an integer d. In one step you can jump from index i to index: i + ...

  10. 4.2 Go switch

    4.2 Go switch switch语句用于基于不同条件执行不同动作,每一个case分支唯一,自上而下逐一测试,直到匹配结束,默认自动终止,不需要break. 2. switch基本语法 swit ...