1.枚举
1.自定义枚举类
编写一个季节类,他只有四个季节
传统设计思路,可以随便实现各种没有的季节,不合理,要使用枚举
步骤: //1.将构造器私有化,防止直接new
//2.去掉set方法,防止属性被修改,只读的
//3.在season内部,直接创建固定对象
//4.优化添加final,枚举的大写
public class Enumeration01 {
public static void main(String[] args) {
System.out.println(Season.AUTUM);
}
}
class Season{//自定义枚举
private String name;
private String desc;//描述
public static final Season SPRING= new Season("春天","温暖");
public static final Season WINTER= new Season("冬天","寒冷");
public static final Season AUTUM= new Season("秋天","凉爽");
public static final Season SUMMER= new Season("夏天","热");
//1.将构造器私有化,防止直接new
//2.去掉set方法,防止属性被修改,只读的
//3.在season内部,直接创建固定对象
//4.优化添加final,枚举的大写
private Season(String name, String desc) {
this.name = name;
this.desc = desc;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
@Override
public String toString() {
return name+"是"+desc;
}
}
2.enum枚举类
步骤:
//1.构造器私有化 //2.去掉set方法 //3.class 替换为enum //4.枚举出对象,枚举对象必须放在枚举类最前面,多个常量对象用逗号隔开 //5.这些对象本质还是static final类型的
如果使用的是无参构造器创建枚举对象,实参列表和小括号可以省略
enum Season2{//自定义枚举,是final类型的类
//1.构造器私有化
//2.去掉set方法
//3.class 替换为enum
//4.枚举出对象,在最前面,多个常量对象用逗号隔开
//5.这些对象本质还是static final类型的
SPRING("春天","温暖"),WINTER("冬天","寒冷"),
AUTUM;
private String name;
private String desc;//描述
private Season2(){}
private Season2(String name, String desc) {
this.name = name;
this.desc = desc;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
@Override
public String toString() {
return name+"是"+desc;
}
}
public void setDesc(String desc) {
this.desc = desc;
}
@Override
public String toString() {
return name+"是"+desc;
}
}
3.enum类的常用方法
因为枚举类是继承enum类的,有些常用方法
public class EnumMethod {
public static void main(String[] args) {
Season2 aut=Season2.AUTUM;
//1.name()得到枚举对象的名字
System.out.println(aut.name());
//2.ordinal()得到枚举对象的次序,从0开始
System.out.println(aut.ordinal());
//3.values()得到枚举类的全部对象,返回一个数组
Season2 []values=Season2.values();
//增强for
for(Season2 season2:values){
System.out.println(season2.name());
}
//4.给一个字符串,如果有该枚举对象返回这个枚举对象,没有保错
Season2 season3=Season2.valueOf("SPRING");
System.out.println(season3);
//5.compareTo()比较两个枚举对象的编号
System.out.println(Season2.SPRING.compareTo(Season2.WINTER));
}
}
4.注意
(1).枚举类继承了enum类,不能继承其他类了
(2).通过枚举对象,可以访问枚举类的方法
(3).enum可以实现接口
public class EnumDetail {
public static void main(String[] args) {
A.Muser.say();
}
}
enum A implements B{
Muser;
public void say(){
System.out.println("aa");
}
}
interface B{
public void say();
}
2.注解
1.@override
重写父类的方法时加这个注解,只能在方法上使用
@target 修饰注解的注解
2.@Deprecated
修饰过时的元素,包括类,方法,接口,包,参数
过时的时不推荐使用
3.@SuppressWarning
all抑制所有警告
可以写在方法上,类上,语句上
4.四种元注解(了解)