枚举&注解
枚举:自定义枚举类
使用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更少的代码. 注解是什么 ...
随机推荐
- Jenkins 邮件收发(qq 邮箱)
一.配置 Jenkins 邮箱的全局配置 检查是否已安装插件 Email Extension Plugin 获取 qq 邮箱 授权码 进入 qq 邮箱 ---> 设置 ---> 账户 配置 ...
- Python爬虫(一)爬百度贴吧
简单的GET请求: # python2 import urllib2 response = urllib2.urlopen('http://www.baidu.com') html = respons ...
- OSG程序设计之Hello World 2.0
现在为Hello World添加一些键盘响应事件. //需要多添加两个库:osgGAd.lib.osgd.lib 代码如下: #include <osgDB/ReadFile> #incl ...
- 使用Golang + lua实现一个值班机器人
我们在的项目组呢,有一项工作是,收邮件(很大程度上使用邮件是为了存个底),然后从我们的系统里边查一下相关信息,然后回复个邮件的工作.虽然工作量并不大,但是会把时间切的稀碎.为了拯救我的时间,所以做了一 ...
- S - Making the Grade POJ - 3666 结论 将严格递减转化成非严格的
S - Making the Grade POJ - 3666 这个题目要求把一个给定的序列变成递增或者递减序列的最小代价. 这个是一个dp,对于这个dp的定义我觉得不是很好想,如果第一次碰到的话. ...
- 王颖奇 201771010129《面向对象程序设计(java)》第一周学习总结
<面向对象程序设计(java)>第一周学习总结 第一部分:课程准备部分 填写课程学习 平台注册账号, 平台名称 注册账号 博客园:www.cnblogs.com wangyingqi 程序 ...
- VL01N发货过账无法冲销
1业务场景 SD和EWM在使用BAPI:BAPI_OUTB_DELIVERY_CONFIRM_DEC发货过账后,发现外向交货单无法被冲销,后来发现是在发货过账后,有一个字段VLSTK声明仓库被维护上了 ...
- Linux内核驱动学习(五)KThread学习总结
文章目录 简介 例程 运行结果 参考 简介 使用内核线程需要包含头文件#include <linux/kthread.h>,下面整理了一下常用的api接口,如下表格所示: 函数 功能 st ...
- 阿里巴巴泰山版《Java 开发者手册》,也是一份防坑指南
我是风筝,公众号「古时的风筝」,一个不只有技术的技术公众号,一个在程序圈混迹多年,主业 Java,另外 Python.React 也玩儿的 6 的斜杠开发者. Spring Cloud 系列文章已经完 ...
- 小程序如何动态修改标题navigationBarTitleText
首先我们先设置标题.进入页面所在的json文件加入以下代码即可成功设置: "navigationBarTitleText": "我是标题啊!", 然后修改这个标 ...