一.枚举类的使用
1.枚举类的的理解
①类的对象有限个,且确定多个
②需要定义一组常量时,使用枚举类
③枚举类如果只有一个对象,则是单例模式
2.定义枚举类方式1
①私有化类的构造器,并初始化对象的属性
private
②私有化属性
private final
③提供当前枚举类的多个对象
public static final
④可以提供对象属性的get()方法以及提供toString方法
⑤例子
class Weather{
private Weather(String name){
this.name = name;
}
private final String name;
public static final Weather Spring = new Weather("春天");
public static final Weather Summer = new Weather("夏天");
@Override
public String toString() {
return this.name;
}
}
3.定义枚举类方式2
①enum来定义枚举类
enum Weather
②先初始化对象
Spring,Summer;
③提供构造器,提供私有化对象属性,提供对象的属性get方法或者toString
④例子
enum Weather{
Spring("春天"),Summer("夏天");
private final String name;
private Weather(String name){
this.name = name;
}
@Override
public String toString() {
return this.name;
}
}
⑤enum类中的常用方法
values(); Weather[] a = Weather.values()//返回枚举类中的所有对象的数组,可供数组索引使用
valueOf(Strign str);Weather Spring = Weather.valueOf(“Spring”)//利用字符串返回相应的对象
toString() ;//默认输出当前对象的名称
⑥枚举类enum实现接口
第一种:所有对象公用一个实现方法
在enum类中实现方法
第二种:每一个对象有自己独立的方法
例如:
Spring(“春天”){public void show{}},//在对象Spring中重写方法show,也可在Summer中重写show。
注意:swicth本身即可接受枚举类对象,即case Spring:
二.注解的使用
1.注解的理解
①整体框架:注解+反射+设计模式
②理解:代码中的特殊标记,可以被读取
2.注解例子(编译时来校验代码)
① @Override 校验重载方法
② @Deprecated 标注该方法是否过时
③ @SuppressWarnings 编译时抑制警告。
3.自定义注解
①声明
public @interface MyInnovateion{}
②定义value
String value();
String value() default “hello”;
③使用
@MyInnovation(“hi”)
@MyInnovation()
④通过反射来处理注解中的数据
4.JDK提供的四种元注解
①理解元注解
对现有的注解进行说明的注解
②Retention
指明注解的生命周期(编译丢弃注解,运行丢弃注解,最终保留注解)
③Target
指明注解能够修饰的元素(类,属性,方法…)
④Documented
修饰的注解在javadoc后会保留
⑤Inherited
所修饰的注解具有继承性,子类自动有该注解
⑥一般定义时通常用
Retention指明注解的声明周期,Target指明注解的使用范围
5.JDK8注解新特性
①可重复注解(原来需要去使用value数组,现在可重复注解)@Repeatable
在MyInnovation上声明@Repeatable(MyInnovatiins.class)//传入形参为声明为MyInnovations类(value数组)
注意MyInnovation和MyInnovations的taget,Retention,inherited都得相同
②类型注解(注解可能需要修饰不同的对象)
加入类型注解,表明该注释能使用在任何类型的语句中