Java笔记--枚举&注解
1、自定义枚举类的实现,例:
class Season{
//1,提供类的属性,声明为rivate final
private final String name;
private final String Desc;
//2,声明为final的属性,在构造器中初始化,构造器为private
private Season(String name, String desc){
this.name = name;
this.Desc = desc;
}
//3,通过公共的方法来调用属性
public String getName() {
return name;
}
public String getDesc() {
return Desc;
}
//4,创建对象,用public static final来修饰
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 [name=" + name + ", Desc=" + Desc + "]";
}
}
2、使用enum关键字定义枚举类:
public enum Season {
SPRING("spring", "春天"),
SUMMER("Summer", "夏天"),
AUTUMN("Autumn", "秋天"),
WINTER("winter", "冬天");
private final String name;
private final String desc;
public String getName() {
return name;
}
public String getDesc() {
return desc;
}
private Season(String name, String desc){
this.name = name;
this.desc = desc;
}
}
3、枚举类常用方法:
1)values();
2)vauueOf(String name);
//1.values()
Season[] seasons = Season.values();
for(int i = 0; i < seasons.length; i++){
System.out.println(seasons[i]);
}
//2.valueOf(String name):传入的参数必须是枚举类存在的对象名字
//否则报java.lang.IllegalArgumentException的异常
String str = "SPRING";
Season season = Season.valueOf(str);
System.out.println(season);
4、枚举类也可以实现接口,可以让不同的枚举类对象调用被重写的抽象方法,执行效果不同(让每个对象分别重写方法)。
5、元素据(MetaData),就是注解(Annotation),是代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理,通过使用Annotation,程序员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充信息。
6、Annotation可以像修饰符一样被使用,可用于修饰包、类、构造器、方法、成员变量、参数、局部变量的声明、这些信息被保存在Annotation的“name=value”对中。
7、Annotation能被用来为程序元素设置元数据。
8、JDK中的3个基本注解类型:
1)@Override:限定重写父类方法。该注释只能用于方法;
2)@Deprecated:用于表示某个程序元素(类、方法等)已过时;
3)@SuppressWarnings:抑制编译器警告。
9、自定义Annotation:
public @interface MyAnnotation {
String value() default "MyAnnotation";
}
10、JDK的元Annotation用于修饰其他Annotation定义,JDK5.0提供了专门在注解上的注解类型,分别是:
1)Retention:只能用于修饰一个Annotation定义,用于指定该Annotation可以保留多长时间。@Rentention包含一个RetentionPolicy类型的成员变量,使用 @Rentention时必须为该value成员变量指定值(RetentionPolicy.SOURCE、RetentionPolicy.CLASS、RetentionPolicy.RUNTIME)
2)Target:用于修饰Annotation定义,用于指定被修饰的Annotation能用于修饰哪些程序元素,@Target也包含一个名为value的成员变量。
3)Documented:用于指定被该元Annotation修饰的Annotation类将被javadoc工具提取成文档(定义为Documented的注解必须设置Retention值为RUNTIME)。
4)Inherited:被它修饰的Annotation将具有继承性,如果某个类使用了被@Inherited修饰的Annotation,则其子类将自动具有该注解(使用较少)。
Java笔记--枚举&注解的更多相关文章
- Java笔记---枚举类和注解
Java笔记---枚举类和注解 一.枚举类 自定义枚举类 方式一:JDK5.0之前自定义枚举类 class Seasons { //1. 声明Seasons对象的属性 private final St ...
- java笔记--枚举总结与详解
由于工作原因,已经有两礼拜没有更新博客了,好不容易完成了工作项目,终于又可以在博客园上愉快的玩耍了. 嗯,今天下午梳理了一下关于java枚举的笔记,比较长,不过还是觉得挺厚实的,哈哈,有出入的地方,欢 ...
- 《Effective Java》学习笔记 —— 枚举、注解与方法
Java的枚举.注解与方法... 第30条 用枚举代替int常量 第31条 用实例域代替序数 可以考虑定义一个final int 代替枚举中的 ordinal() 方法. 第32条 用EnumSet代 ...
- Java基础笔记 – Annotation注解的介绍和使用 自定义注解
Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 | 被围观 25,969 views+ 1.Anno ...
- 【转】Java基础笔记 – 枚举类型的使用介绍和静态导入--不错
原文网址:http://www.itzhai.com/java-based-notes-introduction-and-use-of-an-enumeration-type-static-impor ...
- Java学习笔记:注解Annotation
annotation的概念 In the Java computer programming language, an annotation is a form of syntactic metada ...
- 菜鸡的Java笔记 - java 枚举
枚举 枚举属于加强版的多例设计模式 多例设计模式与枚举 多例设计模式的本质在于构造方法的私有化.而后在类的内部产生若干个实例化对象,随后利用一个 st ...
- 学习笔记_J2EE_SpringMVC_03_注解配置_@RequestMapping用法
@RequestMappingde的用法 摘要: 主要介绍注解@RequestMapping的用法 一.@RequestMapping 简介 在Spring MVC 中使用 @RequestMappi ...
- Effective Java笔记一 创建和销毁对象
Effective Java笔记一 创建和销毁对象 第1条 考虑用静态工厂方法代替构造器 第2条 遇到多个构造器参数时要考虑用构建器 第3条 用私有构造器或者枚举类型强化Singleton属性 第4条 ...
随机推荐
- 笔记-capped collection
笔记-capped collection 1. collection 1.1. 简介 集合分为固定与非固定collection,capped collection 1.1.1. c ...
- JS原型链的理解和使用(一)
一些个人的理解,不一定是对的,仅供参考. 在JS中有函数和对象两个概念,而又有一切皆对象的概念及函数也是一个对象.所以可以说函数一定可以作为一个对象,而对象不一定是一个函数. 也可以说在js中对象分为 ...
- 2019年5月6日A股两百点暴跌行情思考
原因:特朗普推特发布贸易战消息 盘面:跳空低开,单边下跌,上证指数最大跌幅200点,收盘千股跌停 操作:开盘加仓,盘中加仓,尾盘满仓 总结: 特大黑天鹅事件爆发引发大盘暴跌时,后续必将迎来一个反弹机会 ...
- HDU1029 简单DP
"OK, you are not too bad, em... But you can never pass the next test." feng5166 says. &quo ...
- java使用netty模拟实现一个类dubbo的分布式服务调用框架
本文较长,如果想直接看代码可以查看项目源码地址: https://github.com/hetutu5238/rpc-demo.git 要想实现分布式服务调用框架,我们需要了解分布式服务一般需要的功能 ...
- HackerOne去年发放超过8200万美元的赏金,联邦政府参与度大幅上涨
2019年,由黑客驱动的漏洞赏金平台HackerOne支付的漏洞奖金几乎是前几年总和的两倍,达到8200万美元. HackerOne平台在2019年也将注册黑客数量翻了一番,超过了60万,同时全年收到 ...
- 在win10中启动redis
1.输入命令"redis-server.exe redis.windows.conf ",按回车键, 2.输入“redis-cli.exe -h 127.0.0.1 -p 6379 ...
- 「APIO2012」派遣
「APIO2012」派遣 传送门 当预算超过限制时,优先丢掉薪水高的忍者(左偏树维护一下),然后答案取合法答案的最大值. 参考代码: #include <algorithm> #inclu ...
- mac允许安装任何来源的软件
如果在“系统偏好设置”--“安全性与隐私”--“通用”版面没有像下面的选项.那么请打开终端,使用命令行操作,之后重新进刚刚的设置界面,会出现“任何来源”的选项. 命令行:(请复制使用) sudo sp ...
- JAVA并发编程之线程安全性
1.一个对象是否是线程安全的,取决于它是否被多个线程访问.想要使得线程安全,需要通过同步机制来协同对对象可变状态的访问. 2.修复多线程访问可变状态变量出现的错误:1.程序间不共享状态变量 2.状态变 ...