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笔记--枚举&注解的更多相关文章

  1. Java笔记---枚举类和注解

    Java笔记---枚举类和注解 一.枚举类 自定义枚举类 方式一:JDK5.0之前自定义枚举类 class Seasons { //1. 声明Seasons对象的属性 private final St ...

  2. java笔记--枚举总结与详解

    由于工作原因,已经有两礼拜没有更新博客了,好不容易完成了工作项目,终于又可以在博客园上愉快的玩耍了. 嗯,今天下午梳理了一下关于java枚举的笔记,比较长,不过还是觉得挺厚实的,哈哈,有出入的地方,欢 ...

  3. 《Effective Java》学习笔记 —— 枚举、注解与方法

    Java的枚举.注解与方法... 第30条 用枚举代替int常量 第31条 用实例域代替序数 可以考虑定义一个final int 代替枚举中的 ordinal() 方法. 第32条 用EnumSet代 ...

  4. Java基础笔记 – Annotation注解的介绍和使用 自定义注解

    Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 |  被围观 25,969 views+ 1.Anno ...

  5. 【转】Java基础笔记 – 枚举类型的使用介绍和静态导入--不错

    原文网址:http://www.itzhai.com/java-based-notes-introduction-and-use-of-an-enumeration-type-static-impor ...

  6. Java学习笔记:注解Annotation

    annotation的概念 In the Java computer programming language, an annotation is a form of syntactic metada ...

  7. 菜鸡的Java笔记 - java 枚举

    枚举        枚举属于加强版的多例设计模式            多例设计模式与枚举        多例设计模式的本质在于构造方法的私有化.而后在类的内部产生若干个实例化对象,随后利用一个 st ...

  8. 学习笔记_J2EE_SpringMVC_03_注解配置_@RequestMapping用法

    @RequestMappingde的用法 摘要: 主要介绍注解@RequestMapping的用法 一.@RequestMapping 简介 在Spring MVC 中使用 @RequestMappi ...

  9. Effective Java笔记一 创建和销毁对象

    Effective Java笔记一 创建和销毁对象 第1条 考虑用静态工厂方法代替构造器 第2条 遇到多个构造器参数时要考虑用构建器 第3条 用私有构造器或者枚举类型强化Singleton属性 第4条 ...

随机推荐

  1. 8 HTML DOM 元素的查找与改变&改变CSS样式&HTML事件

    HTML DOM(Document Object Model)文档对象模型 当网页被加载时,浏览器会创建页面的文档对象模型. HTMLDOM 定义了用于HTML的一系列标准的对象.通过DOM,你可以访 ...

  2. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:设定单词首字母大写

    <!DOCTYPE html> <html> <head> <title>菜鸟教程(runoob.com)</title> <meta ...

  3. BKP寄存器

    STM32的BKP: 备份寄存器是42个16位的寄存器,可用来存储84个字节的用户应用程序数据.他们处在备份域里,当VDD电源被切断,他们仍然由VBAT维持供电.当系统在待机模式下被唤醒,或系统复位或 ...

  4. Android之收音机UI实现(转)

    源码: http://www.2cto.com/kf/201211/171417.html 最近在研究收音机的源码,本来想把收音机从源码中提取出来,做成一个单独的应用,但是,收音机需要底层的支持,所以 ...

  5. WebMagic基础与Maven管理依赖

    2. 快速开始 WebMagic主要包含两个jar包:webmagic-core-{version}.jar和webmagic-extension-{version}.jar.在项目中添加这两个包的依 ...

  6. 轉:StackOverflow2016最新架构探秘

    轉載:http://www.infoq.com/cn/news/2016/03/Stack-Overflow-architecture-insi?utm_source=tuicool&utm_ ...

  7. 记录一次Nginx使用第三方模块fair导致的线上故障排错

    一.问题 今天发现有一台服务器的内存飙升,然后有预警,立即排查,发现该服务内存使用达到了 2G ,询问开发,当天是否有活动,被告知没有,登陆 Pinpoint 发现该服务是有两台机器,并且所有的访问都 ...

  8. Codeforces 1196D2 RGB Substring (Hard version) 题解

    题面 \(q\) 个询问,每个询问给出一个字符串 \(s\),要你在 \(s\) 中用最小替换得到无穷字符串 RGBRGBRGB... 的长度为定值 \(k\) 的子串. 题解 一眼看过去可能是编辑距 ...

  9. 为安卓手机刷上手机kali系统Nethunter

    kali Nethunter是一个装在手机上的kali,集成了kali的工具包,hid,无线攻击等等. 本文主要叙述如何安装此系统并正确的配置.不让你走弯路. 首先我们拒绝傻瓜安装软件 kali ne ...

  10. 【转载】C#常用控件属性及方法介绍

    C#常用控件属性及方法介绍                                               目录 1.窗体(Form) 2.Label (标签)控件 3.TextBox(文 ...