枚举&注解
枚举:自定义枚举类
使用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更少的代码. 注解是什么 ...
随机推荐
- 使用docker搭建自己的博客(一)
购买服务器 首先服务器选择腾讯云学生服务器,25岁以下实名认证后月租10块,还是很适合我这种简约派的 又财大气粗买了个一年的域名,后面涨价再说吧 安装docker 使用xshell连上服务器 安装必要 ...
- vue js手机端滑到某一个位置时固定位置显示
1.HTML <div id="searchBar"><ul class="items_filter" :class="search ...
- mssql手工盲注
遇到中文的列名 利用unicode 进行单字节的转换 declare @s varchar(50);set @s = N'拉';select UniCode(@s),nchar(UniCode(@s) ...
- 线段树 区间合并 F - Sequence operation
F - Sequence operation 题解:这个题目不是一个特别难的题目,但是呢,写了好久,首先线段树难敲,其次就是bug难找,最后这个代码都被我改的乱七八糟的了,这个有两个地方要注意一下,一 ...
- 03_CSS入门和高级技巧(1)
上节课知识的复习 插入图片,页面中能够插入的图片类型:jpg.jpeg.bmp.png.gif:不能的psd.fw. 语法: <img src="路径" alt=" ...
- python地图投影转换
一.投影包osr与proj4的使用 1.osr投影转换示例 from osgeo import osr,ogr#定义投影#wgs84source=osr.SpatialReference()sourc ...
- 【Kafka】CAP理论以及CAP定律
目录 CAP理论 概述 Consistency Availability Partition Tolerance CAP理论 概述 1988年,加州大学计算机科学家Eric Brewer 提出了分布式 ...
- k近邻法(一)
简介 k近邻法(k-nearest neighbors algorigthm) 是一种最基本的用于分类和回归的方法之一,当没有关于训练数据的分布时,首先最容易想到的就是采用k近邻法. k近邻法输入为实 ...
- [hdu5411 CRB and Puzzle]DP,矩阵快速幂
题意:给一个有向图,从任意点开始,最多走m步,求形成的图案总数. 思路:令dp[i][j]表示走j步最后到达i的方法数,则dp[i][j]=∑dp[k][j-1],其中k表示可以直接到达i的点,答案= ...
- 解决Hystrix dashboard Turbine 一直 Loading…… 及其他坑
问题一.请求 /hystrix.stream 报错,我这里以端口9001为例 请求 http://localhost:9001/hystrix.stream 报404 是因为Srping Boot 2 ...