java之枚举和注解
JDK1.5新增的enum关键字用于定义枚举类。
枚举类和普通类的区别:
- 使用enum定义的枚举类默认继承了java.lang.Enum类;
- 枚举类的构造器只能使用private修饰符;
- 枚举类的所有实例必须在枚举类中显示列出(分隔;结尾)。列出的实例系统会自动添加public static final修饰;
- 所有的枚举类都提供了一个values方法,该方法可以很方便地遍历所有的枚举值;
JDK1.5中可以在switch表达式中使用枚举类的对象作为表达式,case子句可以直接使用枚举值的名字,无需添加枚举类作为限定。
若枚举只有一个成员,则可以作为一种单例模式的实现方式。
package anno;
public class Test {
public static void main(String[] args) {
//这里获取一个Season对象
Season spring = Season.SPRING;
spring.showInfo();
Season summer = Season.SUMMER;
summer.showInfo();
Season autumn = Season.AUTUMN;
autumn.showInfo();
Season winter = Season.WINTER;
winter.showInfo();
spring.test();
//每次执行Season.SPRING获得的都是一个相同的对象,是一种单例模式
Season spring1 = Season.SPRING;
System.out.println(spring==spring1);
}
}
enum Season implements Tmp{
//这里相当于调用有参的私有构造方法
SPRING("春天","春暖花开"),
SUMMER("夏天","炎炎夏日"),
AUTUMN("秋天","秋高气爽"),
WINTER("冬天","寒风凌冽");
private final String NAME;
private final String DESC;
private Season(String NAME, String DESC) {
this.NAME = NAME;
this.DESC = DESC;
}
public void showInfo() {
System.out.println(this.NAME+":"+this.DESC);
}
@Override
public void test() {
// TODO Auto-generated method stub
System.out.println("这是实现Tmp的方法");
}
}
interface Tmp{
void test();
}
java之枚举和注解的更多相关文章
- Java复习——枚举与注解
枚举 枚举就是让某些变量的取值只能是若干固定值中的一个,否则编译器就会报错,枚举可以让编译器在编译阶段就控制程序的值,这一点是普通变量无法实现的.枚举是作为一种特殊的类存在的,使用的是enum关键字修 ...
- [改善Java代码]枚举和注解结合使用威力更大
注解的写法和接口很类似,都采用了关键字interface,而且都不能有实现代码,常量定义默认都是pulbic static final类型的. 他们的主要不同点是:注解在interface前加上@字符 ...
- 跟着刚哥梳理java知识点——枚举和注解(十四)
enum Season{ SPRING("spring","春暖花开"), SUMMER("summer","夏日炎炎" ...
- Java SE 枚举,注解,增强for循环
Java SE 进阶 1.Enum 枚举对象名通常使用全部大写,常量的命名规范 构造器私有化 本类内部创建一组对象 对外暴露对象(通过为对象添加 public final static 修饰符) 可以 ...
- Effective java -- 5 枚举和注解
第三十条:用enum代替int常量enum的简单用法. enum Operation { PLUS("+") { double apply(double x, double y) ...
- 《Effective Java》学习笔记 —— 枚举、注解与方法
Java的枚举.注解与方法... 第30条 用枚举代替int常量 第31条 用实例域代替序数 可以考虑定义一个final int 代替枚举中的 ordinal() 方法. 第32条 用EnumSet代 ...
- 编写高质量代码:改善Java程序的151个建议(第6章:枚举和注解___建议88~92)
建议88:用枚举实现工厂方法模式更简洁 工厂方法模式(Factory Method Pattern)是" 创建对象的接口,让子类决定实例化哪一个类,并使一个类的实例化延迟到其它子类" ...
- [Effective Java]第六章 枚举和注解
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- Java笔记---枚举类和注解
Java笔记---枚举类和注解 一.枚举类 自定义枚举类 方式一:JDK5.0之前自定义枚举类 class Seasons { //1. 声明Seasons对象的属性 private final St ...
随机推荐
- Java标识符(Identifier)(关键字和保留字)
Java标识符(Identifier) 1. 只能由英文字母(A~Z)或(a~z).下划线(_).美元符号($)和数字(0~9)组成,且开头不能为数字. 2. 区分大小写! 3. 无长度限制! _3_ ...
- Kafka 0.10.0.1 consumer get earliest partition offset from Kafka broker cluster - scala code
Return: Map[TopicPartition, Long] Code: val props = new Properties() props.put(ConsumerConfig.BOOTST ...
- linux创建文件名添加当前系统日期时间的方法
使用`date +%y%m%d` Example: mkdir `date +%y%m%d` tar cfvz /tmp/bak.`date +%y%m%d`.tar.gz /etc YmdHM代表年 ...
- Feign超时设置
转-原文:https://xli1224.github.io/2017/09/22/configure-feign/ 在分析 Feign 源码的时候,我们看到 Feign 构建代理对象是分了几层的,一 ...
- TypeScript躬行记(1)——数据类型
TypeScript不仅支持JavaScript所包含的数据类型,还额外扩展了许多实用的数据类型,例如枚举.空值.任意值等. 一.JavaScript的数据类型 JavaScript的数据类型包括6种 ...
- 基于servlet+filter+反射模拟实现天猫首页的后端
前言:为了深入web原理,本项目没有使用框架,主要描述了从请求到页面展现的思路,详情请见文末的具体项目 一.为什么要用filter?直接servlet实现不就行了 因为天猫这样的项目需要很多servl ...
- Web安全-之文件上传漏洞场景
1 上传漏洞危害介绍 上传是Web中最常见的功能,如果上传功能存在设计.编码缺陷,就容易形成上传漏洞,从而成为致命的安全问题,攻击者可以通过上传脚本木马,实现查看/篡改/删除源码和任意涂鸦网页,可 ...
- .Net Core Web Api使用模型验证验证参数合法性
在接口开发过程中免不了要去验证参数的合法性,模型验证就是帮助我们去验证参数的合法性,我们可以在需要验证的model属性上加上Data Annotations特性后就会自动帮我们在action前去验证输 ...
- 使用node.js将xmind导出的excel转换为json树
xmind文件如图所示, 最终生成的数据结构如图 2,选择导出为excel文件,导出的excel文件打开如图 3,安装node读取excel模块 cnpm i node-xlsx --save 4 ...
- 2019牛客全国多校训练四 I题 string (SAM+PAM)
链接:https://ac.nowcoder.com/acm/contest/884/I来源:牛客网 题目描述 We call a,ba,ba,b non-equivalent if and only ...