跟着刚哥梳理java知识点——泛型和注解(十四)

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:被它修饰的注解具有继承性,使用极少。知道就行了

时间: 2024-10-25 12:10:02

跟着刚哥梳理java知识点——泛型和注解(十四)的相关文章

跟着刚哥梳理java知识点——反射和代理(十七)

反射机制是什么?反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有的属性和方法:对于任意一个对象,都能够调用他的一个方法和属性,这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. 反射机制能做什么? 反射机制主要提供以下功能 √ 在运行时判断任意一个对象所属的类 √ 在运行时构造任意一个类的对象 √ 在运行时判断任意一个类所具有的的属性和方法 √ 在运行时调用一个对象的方法 √ 生成动态代理 通过一个对象获得完整的包名和类名 package com.hzg;

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

创建多线程第一种方式:① 继承:继承Thread.② 重写:重写Thread类的run()方法③ 创建:创建一个子类的对象④ 调用:调用线程的start()方法,启动此线程,调用run()方法 1 class Work extends Thread{ //① 继承 2 @Override 3 //② 重写 4 public void run() { 5 for (int i = 1 ;i < 5; i++) { 6 System.out.println(Thread.currentThread(

跟着刚哥梳理java知识点——运算符(五)

运算符:是一种特殊的符号,用以表示数据的运算.赋值和比较. 1.算数运算符(+.-.*./.%.++.--) a)除: int i = 12; int j = i / 5; //2 double d1 = i / 5; //2.0 double d2 = (double)i/5; //2.4 double d3 = i/5.0; //2.4 b)前++和后++区别 前++:先自增一赋值给自己,后做运算赋值 后++:先做运算赋值,后自增一赋值给自己 int a = 10; int b = ++a;

跟着刚哥梳理java知识点——基本数据类型(三)

1.8种基本数据类型 1)4种整数类型(byte.short.int.long) [知识点] 类型 存储空间 数值范围 byte 1字节=8位 -128-127 short 2字节 -2的15次方-2的15次方-1 int 4字节 -2的31次方-2的31次方-1 long 8字节 -2的63次方-2的63次方-1 a)整数的默认类型是int b)以上4种类型,只有long型必须要在末位加上L或者l,其它直接赋值数值即可. byte b1 = 12; byte b2 = 128; //报错 sh

跟着刚哥梳理java知识点——流程控制(六)

分支结构(if…else .switch) 1.if else 语句格式 if(条件表达式){ 执行代码块; } else if(条件表达式){ 执行代码块; } else{ 执行代码块; } 2.switch语句 switch(变量){ case 常量值1: 语句1; break; case 常量值2: 语句2; break; case 常量值3: case 常量值4: case 常量值5: 语句5; break; default: 语句; break; } [知识点]: a)switch:在

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

变量之间的类型转换主要包括自动类型转换和强制类型转换. 1.自动类型转换:当容量小的数据类型与容量大的数据类型做运算时,容量小的会自动的转换成容量大的类型. [知识点]: a)char,byte,short ---> int ---> long ---> float ---> double ---> String char c = 'a'; short s = 12; byte b = 125; //char.short和byte之间运算全部自动转换成int int s1 =

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

1.单行注释 // //这是main方法,程序的入口 public static void main(String[] args) { //输出语句 System.out.println("Hello World"); } 2.多行注释 /* */ /* * print和println区别 */ 知识点:多行注释不能再嵌套多行注释 3.文档注释 /**     */ 知识点:常见注释标签 1)@author    用在类中,作者. 2)@version   对类的说明,标明该类的版本.

跟着刚哥学习Spring框架--通过XML方式配置Bean(三)

Spring配置Bean有两种形式(XML和注解) 今天我们学习通过XML方式配置Bean 1. Bean的配置方式 通过全类名(反射)的方式   √ id:标识容器中的bean.id唯一. √ class:bean的全类名,通过反射的方式在IOC容器中创建Bean,所以要求Bean中必须有无参的构造器 2.依赖注入的方式 1)属性注入:通过setter方法注入Bean的属性值或依赖的对象 属性注入使用<Property>元素,使用name指定Bean的属性名称,使用value指定Bean的属

跟着刚哥学习Spring框架--Spring容器(二)

Spring容器 启动Spring容器(实例化容器) -- IOC容器读取Bean配置创建Bean实例之前,必须对它进行实例化(加载启动),这样才可以从容器中获取Bean的实例并使用.  Bean是Spring管理的基本单位,任何的Java对象和组件都被当成Bean处理,容器还负责管理Bean与Bean之间的依赖关系.  两种类型的启动实现   1.BeanFactory:IOC容器的基本实现,是Spring框架的基础设施,面向Spring本身: -- Spring容器最基本的接口就是BeanF