enum Season{
  SPRING("spring","春暖花开"),
  SUMMER("summer","夏日炎炎"),
  AUTUMN("autumn","秋高气爽"),
  WINTER("winter","白雪皑皑");
}

其实上面等等同于:

class Season{
  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","白雪皑皑");   private final String seasonName;
  privete final String seasonDesc;   private Season(String seasonName,String seasonDesc){
  this.seasonName = seasonName;
  this.seasonDesc = seasonDesc;
  }
}

上面其实我自己写了一个枚举类,就是把相同的去掉,发现了吗?就是封装的枚举类然后把每行结束的分号改成了逗号

主要方法:
  ① values():获取所有枚举类对象,返回的是对象的数组
    Season[] season = Season.values(); 
  ② valueOf(String name):获取对象名字的枚举类对象,返回枚举
    Season sea = Season.valueOf("SPRING"); 
  注意:参数SPRING是实例化对象名称,写错后,sea可不是NULL,会报错的。

如何让枚举实现接口:

iterface Info{
  void show();
}
enum Season Implements Info{
  SPRING("spring","春暖花开"){
    public void show(){
      system.out.printLn("春天在哪里?");
  }
},
SUMMER("summer","夏日炎炎"){
  public void show(){
    system.out.printLn("春天在哪里?");
  }
},
AUTUMN("autumn","秋高气爽"){
  public void show(){
    system.out.printLn("春天在哪里?");
  }
},
WINTER("winter","白雪皑皑"){
  public void show(){
    system.out.printLn("春天在哪里?");
  }
};
}

总结:
发现是不是可以在每个对象内部重写接口的方法,这样就让不同的枚举类的对象
实现接口效果不一样。

Java注解
①:从java5.0开始,增加了对元数据的支持,也就是注解(Annotation)。
  就是代码的特殊标记,这些标记可以在编译、类加载、运行时被读取并执行相应的处理。通过使用Annotation,程序员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充信息。
② Annotation 可用于修饰包、类、构造器、方法、成员变量、参数、局部变量
③ JDK提供的的三个常用的基本注解类型
 √ @Override:重写父类方法,只能用于方法
    这个写不写,其实都能重写,好处就是代码一眼就能看见是重写
 √ @Deprecated:用于表示某个程序元素过时(类、方法)
    过时,不代表不能用,只是不推荐了。
    JDK里每次推出新版本都可能去过时一些,其实就是告诉你有更好的
    替换它了,尽量不用它了,没准下个版本我们就去掉了。
    加上以后类或者方法上加一条横线
 √ @SupperessWarnings:抑制编译器警告
给有强迫症的人用的,呵呵。总看到IDE环境左侧一些小黄叹号

加上以后就不叹号了,rawtypes 表示没用泛型 unused表示没用呢
④ 如何自定义注解
格式:
public @interface MyAnnotation{
}
基本没什么人用,知道格式就行了
⑤ 元注解
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR})
@Retention(RetentionPolicy.SOURCE)
public @interface SuppressWarnings {
String[] value();
}
绿色的就是元注解,意思就是修饰注解的注解
@Retention:表示下面注解的生命周期
RetentionPolicy.SOURCE 是个枚举
代表在编译的时候直接丢弃,也是默认值
@Target:用于表示哪些类型能被修饰
比如:我只想让注解修饰类和方法等
@Documented:指定修饰的注解可以被javadoc工具提取成文档
@Inherited:被它修饰的注解具有继承性,使用极少。知道就行了

跟着刚哥梳理java知识点——枚举和注解(十四)的更多相关文章

  1. 跟着刚哥梳理java知识点——多线程(十六)

    创建多线程第一种方式:① 继承:继承Thread.② 重写:重写Thread类的run()方法③ 创建:创建一个子类的对象④ 调用:调用线程的start()方法,启动此线程,调用run()方法 cla ...

  2. 跟着刚哥梳理java知识点——面向对象(八)

    面向对象的核心概念:类和对象. 类:对一类事物描述,是抽象的.概念上的定义. 对象:实际存在的该类事物的每个个体,因而也成为实例(Instance). Java类及类的成员:属性(成员变量Field) ...

  3. 跟着刚哥梳理java知识点——深入理解String类(九)

    一.String类 想要了解一个类,最好的办法就是看这个类的实现源代码,来看一下String类的源码: public final class String implements java.io.Ser ...

  4. 跟着刚哥梳理java知识点——变量之间的类型转换(四)

    变量之间的类型转换主要包括自动类型转换和强制类型转换. 1.自动类型转换:当容量小的数据类型与容量大的数据类型做运算时,容量小的会自动的转换成容量大的类型. [知识点]: a)char,byte,sh ...

  5. 跟着刚哥梳理java知识点——注释(二)

    1.单行注释 // //这是main方法,程序的入口 public static void main(String[] args) { //输出语句 System.out.println(" ...

  6. 跟着刚哥梳理java知识点——HelloWorld和常见问题(一)

    1.按照国际惯例,写一段输出HelloWorld的java语句: public class HelloWorld { //这是main方法,程序的主入口 public static void main ...

  7. 跟着刚哥梳理java知识点——IO(十五)

    凡是与输入.输出相关的类.接口都定义在java.io包下 java.io.File类 1.File是一个类,可以有构造器创建其对象.此对象对应着一个文件或者一个目录. 2.File中的类,仅涉及到如何 ...

  8. 跟着刚哥梳理java知识点——泛型(十三)

    一. 泛型概念的提出(为什么需要泛型)? 首先,我们看下下面这段简短的代码: public class GenericTest { public static void main(String[] a ...

  9. 跟着刚哥梳理java知识点——集合(十二)

    Java集合分为Collection和Map两种体系 一.Collection接口: Collections接口为我们提供了以下方法: size():返回集合中元素的个数 add(Object obj ...

随机推荐

  1. USB重定向

    第一期中,我们一起简要的看了下传统PC和桌面云下USB重定向和USB设备重定向方式的差异,了解了桌面云下外设兼容性问题来源的根源-USB设备本身驱动不规范/不支持, 或者虚拟机驱动实现上与USB设备对 ...

  2. JavaScript代码规范和性能整理

    性能 Js在性能方面有多要注意的地方: 避免全局查找 Js性能优化最重要的就是注意全局查找,因为作用域的查找是先找局部作用域在没有找到之后在去上一级作用域查找直到全局作用域,所以全局作用域查找的性能消 ...

  3. 做了个新的UWP类库 Sharp2D

    C#开发UWP的时候如果要实现高斯模糊效果的话,最好的选择似乎是微软的Win2D 但是Win2D太过庞大了,仅仅是庞大其实也没啥问题,毕竟net core就很庞大,但Win2d是一个Winmd组件 w ...

  4. instance “error” 了怎么办?- 每天5分钟玩转 OpenStack(159)

    这是 OpenStack 实施经验分享系列的第 9 篇. OpenStack 用多了,经常会遇到这种情况:对 instance 执行某个操作如果失败了就会处于 "error" 状态 ...

  5. PCB行业版特色功能展示

    普实PCB行业版,专为PCB行业需求而定制.秉承一体化.集团化.移动化为设计理念,采用互联网技术.云计算技术.移动应用技术开发的新一代系统帮助PCB企业创新管理模式.引领商业变革!系统从接到订单开始, ...

  6. thinkphp join加别名

    //此段代码在某个Model里面$tbpre = $this->tableprefix;$Aaa = M('aaa');$Aaa->table(array("{$tbpre}aa ...

  7. javascript 随机显示指定内容

    今天碰到一个需求,一个页面显示赞助厂商的信息,但是厂商要求排序要随机排,因为是个静态页面不是读取数据库的,所以打算用js来控制 var arr = new Array('张三', '李四', '王五' ...

  8. JavaWeb之Ajax

    一.什么是Ajax 1.1.Ajax的定义 Ajax:(Asynchronous JavaScript And XML)指异步 JavaScript 及 XML 不是一种新的编程语言,而是一种用于创建 ...

  9. oracle表空间创建

    /*分为四步 *//*第1步:创建临时表空间  */create temporary tablespace user_temp  tempfile 'D:\oracle\oradata\Oracle9 ...

  10. MongoDB一般安装

    MongoDB一般安装 1.首先到官网(http://www.mongodb.org/downloads )下载合适的安装包,目前的最新版本为2.6 安装包有zip和msi格式的,这里推荐下载zip格 ...