首页 > 编程语言 >java学习笔记014 枚举类

java学习笔记014 枚举类

时间:2022-08-24 20:34:03浏览次数:48  
标签:java name Season public 枚举 014 注解 Annotation

1.比较器
Comparable接口 自然排序
	@Override
	public int compareTo(T t){
		//自定义比较规则
		//要求: this > t ,返回正整数
		//	this == t,返回0
		//	this < t,返回负整数
	}
Comparator接口 定制排序
	@Override
	compare(Object o1, Object o2){}
	eg:
	Arrays.sort(arr, new Caparator(){
		@Override
		compare(Object o1, Object o2){
			//比较逻辑
		}
	});
2.System类
exit(int status)	退出程序,0表示正常退出,非0表示非正常退出
gc()	请求垃圾回收器进行垃圾回收
3.枚举类
类的对象只有有限个,确定的
1)自定义枚举类jdk1.5之前
eg:
class Season{
	//1声明属性private final
	private final String name;
	//2私有化类的构造器
	private Season(String name){
		this.name = name;
	}
	//3提供当前枚举类的多个对象
	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");
	//4其他
}

2)enum关键字jdk1.5及之后
//继承了java.lang.Enum,该类重写toString()打印对象名
enum Season{
	//1先写有哪些对象,省略修饰符,多个对象之间用逗号
	SPRING("spring"), 
	SUMMER("SUMMER"),
	AUTUMN("AUTUMN"),
	WINTER("WINTER");
	//2声明属性
	private final String name;
	//3私有化类的构造器
	private Season(String name){
		this.name = name;
	}
	//4其他
}
	
3)Enum类中常用方法
	Season[]	values()		返回枚举类型的对象数组
	//找不到str对应的对象会抛异常:IllegalArgumentException
static	Season		valueOf(String str)	把字符串转成相应枚举类对象
	String		toString()		返回枚举类对象常量的名称
	
4)enum定义的枚举类实现接口
enum Season implements MyInterface{
	//1先写有哪些对象,省略修饰符,多个对象之间用逗号
	SPRING("spring"){
		@Override
		public void getDescription(){
			//
		}
	}, 
	SUMMER("SUMMER"),
	AUTUMN("AUTUMN"),
	WINTER("WINTER");
}

switch(Season season){
	case SPRING:
		break;
	case SUMMER:
		break;
}
4.注解Annotation
1)常见Annotation
	1文档相关注解
		@author @version @since @Description @param
	2编译时进行格式检查
		@Override @Deprecated(已弃用的) @SuppressWarnings(抑制编译器警告)
	3跟踪代码依赖性,实现代码配置功能
	
2)自定义Annotation
	//配合注解的信息处理流程(使用反射)才有意义
	public @interface MyAnnotation{
		String value() default "hello";	//定义成员,可以定义默认值
	}
	public @interface MyAnnotation{
		String[] value();
	}
	自定义注解通常会指定Retention和Target两个元注解

3)元注解
jdk提供四种,用于修饰其他Annotation
@Retention
	1指定Annotation的生命周期
	eg:
	@Retention(RetentionPolicy.SOURCE)
	public @interface SupperessWarnings{
		...
	}
	2关于RetentionPolicy
	public enum RetentionPolicy{
		SOURCE,		//指定注解将被编译器discard(抛弃,丢弃)
		CLASS,		//默认行为,将被编译到class文件中,但是运行时不会被加载到内存之中
		RUNTIME;	//可以被编译到class文件中,被加载到内存之中,可以被反射读取
	}
@Target
	1用于指定Annotation可以修饰的元素
	public @interface Target {
		ElementType[] value();
	}
	2使用实例
	@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
	@Retention(RetentionPolicy.SOURCE)
	public @interface SuppressWarnings {
		...
	}
	3关于Target成员,枚举类ElementType
	public enum ElementType{
		TYPE,	//用于class,interface(包括Annotation),enum
		FIELD,	//
		METHOD,
		PARAMETER,
		CONSTRUCTOR,
		LOCAL_VARIABLE,
		ANNOTATION_TYPE,
		PACKAGE,
		TYPE_PARAMETER,	//since 1.8
		TYPE_USE;	//since 1.8
	}
@Documented
	1被@Documented标记的Annotation会被javadoc提取为文档
		eg:@Deprecated被@Documented标记,Date类的某个构造器被@Deprecated注解,所以在javadoc生成的文档中,Date的某个构造器显示为
		@Deprecated
		public Date(int year, int month, int day){...}
	2被@Documented标记的Annotation需要被@Retention标记为RUNTIME
	
@Inherited
	被@Inherited修饰的Annotation具有继承性
	如果某个类被@Inherited修饰的Annotation注解,那么这个类的子类自动拥有此Annotation
	
	
4)jdk1.8注解新特性
	可重复注解
		@Repeatable
	类型注解
		@Target的枚举类中
		Element_Type.TYPE_PARAMETER	表明该注解能写在类型变量的声明语句中
		Element_Type.TYPE_USE	表明该注解能写在使用类型的任何语句中

标签:java,name,Season,public,枚举,014,注解,Annotation
From: https://www.cnblogs.com/zhengcg/p/16618416.html

相关文章

  • javaWeb-HTML
    HTML基础标签字体大小(<h1>---<h6>)<h1>我是h1</h1><h2>我是h1</h2><h3>我是h1</h3><h4>我是h1</h4><h5>我是h1</h5><h6>我是h1</h6>换行<hr>......
  • jpaJAVASql
    QCarInfoqCarInfo=QCarInfo.qCarInfo;BooleanExpressionexpression=qCarInfo.valid.eq(true);if(StringUtils.isNotEmpty(carListPCInput......
  • 「COCI2014-2015#2」Norma 题解
    「COCI2014-2015#2」Norma题解题目大意给定一个\(n\)个数的序列\(a\),求\[\underset{i=1}{\overset{n}{\sum}}\underset{j=i}{\overset{n}{\sum}}(j-i+1)\min(a_i,a_......
  • java关于程序流程控制
    java流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:顺序结构分支结构循环结构 顺序结构:程序从上到下逐行地执行,中间没有任何判断和跳转。分支结构:根......
  • HTML编辑器粘贴图片自动上传到服务器(Java版)
    ​如何做到ueditor批量上传word图片?1、前端引用代码<!DOCTYPE html PUBLIC "-//W3C//DTDXHTML1.0Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-......
  • java泛型详解
    java泛型详解1.泛型​ Java泛型是J2SE1.5中引入的一个新特性,其本质是参数化类型,也就是说所操作的数据类型被指定为一个参数(typeparameter)这种参数类型可以用在类、接......
  • DES加密解密:android、java、js
    需求:登录的时候WEB或APP将数据加密后传给JAVA后端,后端接收到数据解密后得到数据进行处理。eg:明文:12345678密文:PofrPuMcG5CiXuyR5B5ysQ==一、java端importjavax.cr......
  • abap转java时间戳
    sap与java系统交互时,日期、时间转换时间戳可以使用下面方法实现: 时间戳生成cl_pco_utility=>convert_abap_timestamp_to_java  时间戳解析cl_pco_utility=>conv......
  • java设计思路-项目中两种接口设计方法,请讲出优缺点
    结论:通过函数式接口,可以任意组装成不同粒度的接口,使用起来很灵活,强烈推荐。第一种设计方法:packagecom.iit.service.user;importcom.iit.domain.User;//这是第1种......
  • 网页编辑器粘贴图片自动上传到服务器(Java版)
    ​ 在之前在工作中遇到在富文本编辑器中粘贴图片不能展示的问题,于是各种网上扒拉,终于找到解决方案,在这里感谢一下知乎中众大神以及TheViper。通过知乎提供的思路找到粘......