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. .Net软件开发面试技巧

    2016.11.20日,我们毕业了!到了大家各奔东西的日子了,有留在家里的,有另求出路的,有留在哈尔滨的,有去北京的!去北京的一共有11个同学,我就是这11个人里的一个! 大学刚毕业的时候,在济南上班 ...

  2. PHP链接Redis

    命令行下运行 redis-server.exe redis.windows.conf 此时,redis服务已经开启,然后我们可以再新开一个命令行,作为控制台 redis-cli.exe -h 127. ...

  3. 关于redis 缓存的问题

    项目是 星期三上线的 , 今天来的时候有个问题,  我觉得很有价值,所以就记录了一下. 问题描述:  我们是做app 开发 的, 这次开发是要 把 以前的app 的业务 分开,新建一 个app ,这个 ...

  4. 抓包工具Wireshark的使用

    WireShark是非常流行的网络封包分析软件,功能十分强大.可以截取各种网络封包,显示网络封包的详细信息. WireShark界面简介 启动WireShark的界面如下: 选择网卡 wireshar ...

  5. python pytesser 的安装

      安装包: 需要安装的包主要有两个: PIL 和 pytesser . PIL模块的安装不多说 pytesser 模块的安装: 下载后得到 "pytesser_v0.0.1.zip&quo ...

  6. 深究WeixinJSBridge未定义之因

    对于一个没有使用微信JS-SDK的网站来说,我们竟然收到了WeixinJSBridge is not defined 的报错: 去网上一搜,发现很多开发者都遇到类似的问题: 我的微信项目,没有用到微信 ...

  7. 【转载】扩展Robot Framework,实现失败用例自动再执行(失败重跑)

    使用自动化脚本进行测试,经常受环境影响等各方面导致本能成功的脚本失败,下面介绍了RFS框架下,失败重跑的方法: 通过改写RobotFramework源代码增加--retry选项,实现test级别的失败 ...

  8. 通过hue提交oozie定时任务

    Oozie是什么? Oozie是一种Java Web应用程序,它运行在Java servlet容器——即Tomcat——中,并使用数据库来存储以下内容: 工作流定义 当前运行的工作流实例,包括实例的状 ...

  9. 实现input输入时智能搜索

    // 智能搜索 function oSearchSuggest(searchFuc) { var input = $('#in'); var suggestWrap = $('#gov_search_ ...

  10. cuda编程学习2——add

    cudaMalloc()分配的指针有使用限制,设备指针的使用限制总结如下: 1.可以将其传递给在设备上执行的函数 2.可以在设备代码中使用其进行内存的读写操作 3.可以将其传递给在主机上执行的函数 4 ...