栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

枚举类和注解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

枚举类和注解

1.枚举类

概念:枚举(enumeration)是一组常量的集合;枚举类属于特殊的类,里面只包含一组有限且特定的对象

实现方式:

自定义类实现枚举

class Season {
    private String name;
    private String desc;

    // 1.将构造器私有化,防止直接创建对象
    private Season(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }

    // 2.去除setXXX方法,防止属性被修改(枚举类对象通常为只读)

    // 3.在该类内部直接创建固定的对象(final + static实现底层优化,public对外暴露对象)
    public static final Season SPRING = new Season("spring", "warm");
    public static final Season SUMMER = new Season("summer", "hot");
    public static final Season AUTUMN = new Season("autumn", "cool");
    public static final Season WINTER = new Season("winter", "cold");
    
}

使用enum关键字实现枚举

enum Season {
	// 相当于public static final Season SPRING = new Season("spring", "warm");
    SPRING("spring", "warm"), 
    SUMMER("summer", "hot"),
    Autumn("autumn", "cool"),
    WINTER("winter", "cold");
    
    private String name;
    private String desc;
    Season(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }
}

注意事项:

使用enum实现枚举要将定义的常量对象写在枚举类的行首多个enum实现的常量对象之间使用逗号间隔,最后带一个分号使用enum关键字实现的类中构造器自动定义为private使用enum关键字开发枚举类会默认继承Enum类,且该枚举类为final类使用无参构造器创建枚举对象时,实参列表和括号都可以省略,只需要写一个大写的单词(前提是存在默认或者显示的无参构造器)

tips:

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


2.注解

概念:注解(Annotation)也被称为元数据,用于修饰解释包、类、方法、属性、构造器等数据信息。注解可以被编译运行,相当于嵌入到代码中的补充信息常见注解:

@Override:

限定某个方法是重写父类的方法,编译器根据该注解进行语法的校验。比如在子类一个方法中加上@Override注解,如果该方法不是重写的父类方法则会报错不写@Override但是子类重写了父类的方法是没问题的@Override只能修饰方法 @Deprecated:用于表示某个程序元素(类、方法、包等)过时@SuppressWarnings:抑制编译警告,作用范围和放置的位置相关,比如@SuppressWarnings({"all"})表示抑制所有警告 元注解:修饰注解的注解

@Retention:指定注解的作用范围(即说明被修饰的注解可以保留多久),有三种SOURCE,CLASS,RUNTIME

Source:编译器使用后就丢弃该注解,不会写入到class文件中CLASS:默认值,编译器把注解记录在class文件中。运行程序时,JVM不会保留该注解RUNTIME:编译器把注解记录在class文件中。运行程序时,JVM会保留该注解,程序可以通过反射获取该注解 @Target:指定注解可以在哪些地方使用@documented:指定该注解是否会被Javadoc工具提取为文档的内容@Inherited:某个类使用被其修饰的注解,则该类的子类会自动具有该注解

tips:

进入@Override的源码中会出现@interface,这表示的不是接口,而是说明Override是一个注解类。

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/727896.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号