枚举&注解
枚举:自定义枚举类
使用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"; }
枚举&注解的更多相关文章
- Java 枚举&注解
枚举类 如何自定义枚举类 JDK1.5之前需要自定义枚举类 JDK 1.5 新增的 enum 关键字用于定义枚举类 若枚举只有一个成员, 则可以作为一种单例模式的实现方式 //枚举类 class Se ...
- 在Android中使用枚举注解而不是枚举
Enums often require more than twice as much memory as static constants. You should strictly avoid us ...
- Java笔记--枚举&注解
1.自定义枚举类的实现,例: class Season{ //1,提供类的属性,声明为rivate final private final String name; private final Str ...
- hibernate的枚举注解@Enumerated
@Enumerated(value=EnumType.ORDINAL)采用枚举类型的序号值与数据库进行交互, 此时数据库的数据类型需要是数值类型,例如在实际操作中 CatTest ct = new C ...
- 利用注解和反射,将Bean枚举字段的值填入相应的字段中,并转化为fastjson返回前台
需求:需要将枚举类型的字段例如enable(是否启用)转化为enable:1,enableName:是.这种形式返回给前台. 思路:在bean字段上加上枚举类型的注解,通过字段的值和枚举类反射获取枚举 ...
- 关于Java中枚举Enum的深入剖析
在编程语言中我们,都会接触到枚举类型,通常我们进行有穷的列举来实现一些限定.Java也不例外.Java中的枚举类型为Enum,本文将对枚举进行一些比较深入的剖析. 什么是Enum Enum是自Java ...
- JavaSE复习(八)反射和注解
反射 框架设计的灵魂 框架:半成品软件.可以在框架的基础上进行软件开发,简化编码 反射:将类的各个组成部分封装为其他对象,这就是反射机制 好处: 可以在程序运行过程中,操作这些对象. 可以解耦,提高程 ...
- JAVA注解引发的思考
自从JDK5開始Java開始添加了对元数据(MetaData)的支持,也就是注解(Annotation),到JDK7时已经有四种基本注解,新添加了一种@SafeVarargs. @Override注解 ...
- java注解使用总结
2005年,sun公司推出了jdk1.5,同时推出的注解功能吸引了很多人的目光,使用注解编写代码,能够减轻java程序员繁琐配置的痛苦. 使用注解可以编写出更加易于维护,bug更少的代码. 注解是什么 ...
随机推荐
- python(运算符)
一.运算符 1.算数运算符 (1)加(+) 注意:字符串与整数之间不能进行相加,需要通过str()或int()进行转换数据类型 整数与整数相加 >>> 1 + 1 2 >> ...
- 线程池(Java中有哪些方法获取多线程)
线程池(Java中有哪些方法获取多线程) 前言 获取多线程的方法,我们都知道有三种,还有一种是实现Callable接口 实现Runnable接口 实现Callable接口 实例化Thread类 使用线 ...
- [LiDAR数据模拟]系列(1) HELIOS模拟平台介绍
关键词:LiDAR 激光雷达 点云模拟 作者:李二 日期:06/05/2020 - 07/05/2020 写在前面:我前段时间的一个工作(地基激光雷达TLS的新型布站策略)需要用到模拟的TLS点云数据 ...
- 【HBase】HBase和Sqoop整合
目录 需求一 步骤 一.修改sqoop配置文件 二.在mysql中创建数据库和数据表并插入数据 三.将mysql表中的数据导入到HBase表中 四.在HBase表中查看数据 需求二 步骤 一.创建hi ...
- 【Hadoop离线基础总结】通过Java代码执行Shell命令
通过Java代码执行Shell命令 需求 在实际工作中,总会有些时候需要我们通过java代码通过远程连接去linux服务器上面执行一些shell命令,包括一些集群的状态管理,执行任务,集群的可视化界面 ...
- java 四舍五入 保留n为数
double x1 = 0.026;String format = String.format("%.2f", x1);System.out.println(format); St ...
- csdn code git下载运行的问题
问题是,上传上去的脚本编码会有问题,老报 syntax error: unexpected end of file 搜索之,找到了 http://hi.baidu.com/homappy/item/f ...
- 使用react的一点提醒17/10/26
1.不直接操作dom 今天在和同学讨论的时候,发现了一些以前没注意的问题. 这段时间自己学习时一直都是用原生js写代码,但是以前在公司经常使用jq,也不知不觉间让我习惯了操作dom的倾向. 使用vue ...
- 第四篇:NLP(Natural Language Processing)自然语言处理
NLP自然语言处理: 百度AI的 NLP自然语言处理python语言--pythonSDK文档: https://ai.baidu.com/docs#/NLP-Python-SDK/top 第三方模块 ...
- ABAP基础3:OPENSQL
select result from source where condition group by fileds having condition order by fields into targ ...