6-枚举和注解

枚举

1. 枚举的两种实现方式

1.1 自定义实现枚举

  1. 将构造器私有化
  2. 本类内部创建一组对象
  3. 对外暴露对象
  4. 提供get方法,但是不要提供set方法,因为枚举对象值通常为只读。
  5. 对枚举对象/属性使用final+static共同修饰,实现底层优化。
public class Enumeration02 {
 public static void main(String[] args) {
     System.out.println(Season.AUTUMN);
     System.out.println(Season.SPRING);
 }
}
//演示字定义枚举实现
class Season {//类
 private String name;
 private String desc;//描述
    
 //定义了四个对象, 固定. 
    public static final Season SPRING = new Season("春天", "温暖");
 public static final Season WINTER = new Season("冬天", "寒冷");
 public static final Season AUTUMN = new Season("秋天", "凉爽");
 public static final Season SUMMER = new Season("夏天", "炎热");
    
//1. 将构造器私有化,目的防止 直接 new
//2. 去掉 setXxx 方法, 防止属性被修改
//3. 在 Season 内部,直接创建固定的对象
//4. 优化,可以加入 final 修饰符
private Season(String name, String desc) {
 this.name = name;
 this.desc = desc;
}
public String getName() {
 return name;
}
public String getDesc() {
 return desc;
}
@Override
public String toString() {
 return "Season{" +"name='" + name + '\'' +", desc='" + desc + '\'' +'}';
}
}

1.2 enum关键字实现枚举类

  1. 将构造器私有化
  2. 使用enum代替class修饰类
  3. 其他不变,但是创建的一组对象放到最前面且多个对象用逗号隔开,最后;结尾。
public class Enumeration02 {
    public static void main(String[] args) {
        System.out.println(Season.AUTUMN);
        System.out.println(Season.SPRING);
    }
}
//演示字定义枚举实现
enum Season {//类
    
     SPRING("春天", "温暖"),WINTER("冬天", "寒冷"),AUTUMN("秋天", "凉爽"),SUMMER("夏天", "炎热");
    
    private String name;
    private String desc;//描述
    
    
    
//1. 将构造器私有化,目的防止 直接 new
//2. 去掉 setXxx 方法, 防止属性被修改
//3. 在 Season 内部,直接创建固定的对象
//4. 优化,可以加入 final 修饰符
private Season(String name, String desc) {
    this.name = name;
    this.desc = desc;
}
    
public String getName() {
    return name;
}
public String getDesc() {
    return desc;
}
    
@Override
public String toString() {
    return "Season{" +"name='" + name + '\'' +", desc='" + desc + '\'' +'}';
}
}

使用enum关键字后,就不能再继承其他类了,因为enum会隐式继承Enum类,而Java是单继承机制

枚举类和普通类一样,可以实现接口。

2.注解(Annotation)

注解也被称为元数据,用于修饰解释包、类、方法、属性、构造器、局部变量等数据信息

作用:javaSE中,注解的使用目的比较简单,例如标记过时的功能,忽略警告。

        javaEE中,注解占据了更重要的角色,例如用来配置应用程序的任何切面,代替javaEE旧版中所遗留的繁冗代码和XML配置等

2.1 三个基本的Annotation

@Override注解

@Override:限定某个方法,是重写父类方法,该注解只能用于方法

@Target是修饰注解的注解,称为元注解。

@Deprecated

  1. 用于表示某个程序元素(类、方法等)已过时
  2. 可以修饰方法,类,字段,包,参数等等

@SuppressWarnings

抑制编译器警告

//1. 当我们不希望看到这些警告的时候,可以使用 SuppressWarnings 注解来抑制警告信息
//2. 在{""} 中,可以写入你希望抑制(不显示)警告信息
//3. 可以指定的警告类型有
// all,抑制所有警告
// boxing,抑制与封装/拆装作业相关的警告
// //cast,抑制与强制转型作业相关的警告
// //dep-ann,抑制与淘汰注释相关的警告
// //deprecation,抑制与淘汰的相关警告
// //fallthrough,抑制与 switch 陈述式中遗漏 break 相关的警告
// //finally,抑制与未传回 finally 区块相关的警告
// //hiding,抑制与隐藏变数的区域变数相关的警告
// //incomplete-switch,抑制与 switch 陈述式(enum case)中遗漏项目相关的警告
// //javadoc,抑制与 javadoc 相关的警告
// //nls,抑制与非 nls 字串文字相关的警告
// //null,抑制与空值分析相关的警告
// //rawtypes,抑制与使用 raw 类型相关的警告
// //resource,抑制与使用 Closeable 类型的资源相关的警告
// //restriction,抑制与使用不建议或禁止参照相关的警告
// //serial,抑制与可序列化的类别遗漏 serialVersionUID 栏位相关的警告
// //static-access,抑制与静态存取不正确相关的警告
// //static-method,抑制与可能宣告为 static 的方法相关的警告
// //super,抑制与置换方法相关但不含 super 呼叫的警告
// //synthetic-access,抑制与内部类别的存取未最佳化相关的警告
// //sync-override,抑制因为置换同步方法而遗漏同步化的警告
// //unchecked,抑制与未检查的作业相关的警告
// //unqualified-field-access,抑制与栏位存取不合格相关的警告
// //unused,抑制与未用的程式码及停用的程式码相关的警告

@SuppressWarning 作用范围是和放置的位置相关

比如 @SuppressWarnings 放置在 main 方法,那么抑制警告的范围就是 main

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 枚举类的理解 枚举类的理解 : 类的对象只有有限个,确定的.我们称之为枚举类2.当定义一组常量的时候,强烈建议使用...
    是小猪童鞋啦阅读 208评论 0 0
  • #1.泛型 1.对象实例化时不指定泛型,默认为:Object。 2.泛型不同的引用不能相互赋值。 3.加入集...
    芒果奶油卷阅读 281评论 0 0
  • 1. 枚举类的使用 1.1 自定义枚举类 枚举类的概念与背景 当类的对象只有有限个,确定个时,此类称为枚举类。当需...
    尔玉RGX阅读 499评论 0 2
  • JDK1.5之前需要自定义枚举类 JDK 1.5 新增的 enum 关键字用于定义枚举类 枚举类对象的属性不应允许...
    XLMN阅读 318评论 0 0
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,588评论 28 53