• Java之枚举类和注解


    1、总结

    在某些情况下,一个类的对象是有限而且固定的。例如季节类,只能有 4 个对象
    手动实现枚举类:

    1. private 修饰构造器
    2. 属性使用 private final 修饰
    3. 把该类的所有实例都使用 public static final 来修饰

    枚举类和普通类的区别:

    1. 使用 enum 定义的枚举类默认继承了 java.lang.Enum 类
    2. 枚举类的构造器只能使用 private 访问控制符
    3. 枚举类的所有实例必须在枚举类中显式列出(, 分隔 ; 结尾). 列出的实例系统会自动添加 public static final 修饰
    4. 所有的枚举类都提供了一个 values 方法, 该方法可以很方便地遍历所有的枚举值

    2、代码

    public class Test3 {
    	public static void main(String[] args) {
    		Season spring = Season.SPRING;//Season.SPRING这段执行就是获取一个Season对象
    		spring.showInfo();
    //		System.out.println(Season.values());
    		Season spring1 = Season.SPRING;
    		spring1.showInfo();
    		//每次执行Season.SPRING获取的是相同的对象,枚举类中的每个枚举都是单例模式
    		System.out.println(spring.equals(spring1));//true
    		
    	}
    }
    
    enum Season implements Itest{
    	SPRING("春天","春暖花开"),//此处相当于在调用有参的所有构造private Season(String name,String desc)
    	SUMMER("夏天","炎炎夏日"),
    	AUTUMN("秋天","秋高气爽"),
    	WINTER("冬天","冬风凛冽");
    	
    	private final String name;
    	private final String desc;
    	private Season(String name,String desc) {
    		this.name = name;
    		this.desc = desc;
    	}
    	
    	public void showInfo() {
    		System.out.println(this.name+":"+this.desc);
    	}
    
    	@Override
    	public void test() {
    		System.out.println("这是实现Itest接口的test方法");
    	}
    	
    }
    
    //实现接口的枚举类
    interface Itest{
    	void test();
    }
    

    注解

    从 JDK 5.0 开始, Java 增加了对元数据(MetaData) 的支持, 也就是 Annotation(注释)
    Annotation 其实就是代码里的特殊标记, 这些标记可以在编译, 类加载, 运行时被读取, 并执行相应的处理. 通过使用 Annotation, 程序员可以在不改变原有逻辑的情况下, 在源文件中嵌入一些补充信息.

    三个基本的 Annotation:

    1. @Override: 限定重写父类方法, 该注释只能用于方法
    2. @Deprecated: 用于表示某个程序元素(类, 方法等)已过时
    3. @SuppressWarnings: 抑制编译器警告.
    public class Test4 {
    	public static void main(String[] args) {
    		new testInfo().test1();//@Deprecated用于表示某个程序元素(类, 方法等)已过时
    		@SuppressWarnings({ "unused", "rawtypes" })
    		List list = new ArrayList();//@SuppressWarnings: 抑制编译器警告. 
    	}
    }
    
    class testInfo{
    	void test() {}
    	@Deprecated
    	void test1() {}
    }
    
  • 相关阅读:
    vue中处理过内存泄露处理方法
    Nuxt2.x项目实战相关问题记录
    Android 7.0+模拟器Fiddler抓包详细教程 fiddler443问题解决办法
    inspeckage
    yile接口
    入坑Vue(二)Node.js环境安装
    入坑Vue(一)简介
    入库Vue(三) vuecli全局安装,创建Vue项目
    入坑vue(三)安装VSCode
    入坑Vue(四) 引用element ui组件,配置登录
  • 原文地址:https://www.cnblogs.com/istart/p/12046250.html
Copyright © 2020-2023  润新知