enum Season{
SPRING("spring","春暖花开"),
SUMMER("summer","夏日炎炎"),
AUTUMN("autumn","秋高气爽"),
WINTER("winter","白雪皑皑");
}
其实上面等等同于:
class Season{
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","白雪皑皑"); private final String seasonName;
privete final String seasonDesc; private Season(String seasonName,String seasonDesc){
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
}
上面其实我自己写了一个枚举类,就是把相同的去掉,发现了吗?就是封装的枚举类然后把每行结束的分号改成了逗号
主要方法:
① values():获取所有枚举类对象,返回的是对象的数组
Season[] season = Season.values();
② valueOf(String name):获取对象名字的枚举类对象,返回枚举
Season sea = Season.valueOf("SPRING");
注意:参数SPRING是实例化对象名称,写错后,sea可不是NULL,会报错的。
如何让枚举实现接口:
iterface Info{
void show();
}
enum Season Implements Info{
SPRING("spring","春暖花开"){
public void show(){
system.out.printLn("春天在哪里?");
}
},
SUMMER("summer","夏日炎炎"){
public void show(){
system.out.printLn("春天在哪里?");
}
},
AUTUMN("autumn","秋高气爽"){
public void show(){
system.out.printLn("春天在哪里?");
}
},
WINTER("winter","白雪皑皑"){
public void show(){
system.out.printLn("春天在哪里?");
}
};
}
总结:
发现是不是可以在每个对象内部重写接口的方法,这样就让不同的枚举类的对象
实现接口效果不一样。
Java注解
①:从java5.0开始,增加了对元数据的支持,也就是注解(Annotation)。
就是代码的特殊标记,这些标记可以在编译、类加载、运行时被读取并执行相应的处理。通过使用Annotation,程序员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充信息。
② Annotation 可用于修饰包、类、构造器、方法、成员变量、参数、局部变量
③ JDK提供的的三个常用的基本注解类型
√ @Override:重写父类方法,只能用于方法
这个写不写,其实都能重写,好处就是代码一眼就能看见是重写
√ @Deprecated:用于表示某个程序元素过时(类、方法)
过时,不代表不能用,只是不推荐了。
JDK里每次推出新版本都可能去过时一些,其实就是告诉你有更好的
替换它了,尽量不用它了,没准下个版本我们就去掉了。
加上以后类或者方法上加一条横线
√ @SupperessWarnings:抑制编译器警告
给有强迫症的人用的,呵呵。总看到IDE环境左侧一些小黄叹号
加上以后就不叹号了,rawtypes 表示没用泛型 unused表示没用呢
④ 如何自定义注解
格式:
public @interface MyAnnotation{
}
基本没什么人用,知道格式就行了
⑤ 元注解
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR})
@Retention(RetentionPolicy.SOURCE)
public @interface SuppressWarnings {
String[] value();
}
绿色的就是元注解,意思就是修饰注解的注解
@Retention:表示下面注解的生命周期
RetentionPolicy.SOURCE 是个枚举
代表在编译的时候直接丢弃,也是默认值
@Target:用于表示哪些类型能被修饰
比如:我只想让注解修饰类和方法等
@Documented:指定修饰的注解可以被javadoc工具提取成文档
@Inherited:被它修饰的注解具有继承性,使用极少。知道就行了