常用类学完之后,接下来就是枚举和注解了,枚举比较简单,注解在JavaSE也比较简单,但由于部分内容涉及反射,就先更新枚举了,反射学完再回来写注解
在前面项目三的时候,已经接触到了自定义枚举类,当时是用来描述员工的状态
1. 私有化类的构造器,保证不能在类的外部创建其对象
2. 在类的内部创建枚举类的实例。声明为:public static final
3. 对象如果有实例变量,应该声明为private final,并在构造器中初始化
package com.deserts;
public class EnumDemo01 {
public static void main(String[] args) {
System.out.println(Season.SPRING);
System.out.println(Season.SUMMER);
System.out.println(Season.AUTUMN);
System.out.println(Season.WINTER);
}
}
class Season{
//3. 对象如果有实例变量,应该声明为private final,并在构造器中初始化
private final String SEASONNAME;
private final String SEASONDESC;
//1. 私有化类的构造器,保证不能在类的外部创建其对象
private Season(String SEASONNAME, String SEASONDESC){
this.SEASONNAME = SEASONNAME;
this.SEASONDESC = SEASONDESC;
}
//2. 在类的内部创建枚举类的实例。声明为:public static final
public static final Season SPRING = new Season("春天", "春暖花开");
public static final Season SUMMER = new Season("夏天", "夏日炎炎");
public static final Season AUTUMN = new Season("秋天", "秋高气爽");
public static final Season WINTER = new Season("冬天", "冰天雪地");
@Override
public String toString() {
return "Season{" +
"SEASONNAME='" + SEASONNAME + '\'' +
", SEASONDESC='" + SEASONDESC + '\'' +
'}';
}
}
运行结果
1.使用 enum 定义的枚举类默认继承了 java.lang.Enum类,因此不能再继承其他类
2.枚举类的构造器只能使用 private 权限修饰符
3.枚举类的所有实例必须在枚举类中显式列出(, 分隔 ; 结尾)。列出的实例系统会自动添加 public static final 修饰
4.必须在枚举类的第一行声明枚举类对象
5.JDK 1.5 中可以在 switch 表达式中使用Enum定义的枚举类的对象作为表达式, case 子句可以直接使用枚举值的名字, 无需添加枚举类作为限定。
package com.deserts.demo02;
public class EnumDemo02 {
public static void main(String[] args) {
System.out.println(Season.SPRING);
System.out.println(Season.SUMMER);
System.out.println(Season.AUTUMN);
System.out.println(Season.WINTER);
}
}
enum Season{
SPRING("春天","春风又绿江南岸"),
SUMMER("夏天","映日荷花别样红"),
AUTUMN("秋天","秋水共长天一色"),
WINTER("冬天","窗含西岭千秋雪");
private final String seasonName;
private final String seasonDesc;
private Season(String seasonName, String seasonDesc){
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
@Override
public String toString() {
return "Season{" +
"seasonName='" + seasonName + '\'' +
", seasonDesc='" + seasonDesc + '\'' +
'}';
}
}
运行结果
这些方法都比较简单,Enum类的源码也只有200多行。感兴趣的朋友可以去看看,最主要的是在枚举类中会使用这些方法
与其它类一样,枚举类可以实现一些接口,并在类内实现抽象方法,不同的是,在每个枚举值下可以实现各自的抽象方法,以达到个性化
package com.deserts.demo02;
public class EnumDemo02 {
public static void main(String[] args) {
Season.SPRING.show();
Season.SUMMER.show();
Season.AUTUMN.show();
Season.WINTER.show();
}
}
interface Show{
void show();
}
enum Season implements Show{
SPRING("春天","春风又绿江南岸"){
@Override
public void show() {
System.out.println("春天,春风又绿江南岸");
}
},
SUMMER("夏天","映日荷花别样红"){
@Override
public void show() {
System.out.println("夏天,映日荷花别样红");
}
},
AUTUMN("秋天","秋水共长天一色"){
@Override
public void show() {
System.out.println("秋天,秋水共长天一色");
}
},
WINTER("冬天","窗含西岭千秋雪"){
@Override
public void show() {
System.out.println("冬天,窗含西岭千秋雪");
}
};
private final String seasonName;
private final String seasonDesc;
private Season(String seasonName, String seasonDesc){
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
@Override
public String toString() {
return "Season{" +
"seasonName='" + seasonName + '\'' +
", seasonDesc='" + seasonDesc + '\'' +
'}';
}
}
运行结果
写完这篇博客就要开始集合的学习了,很重要的一章,同样,学完之后我也会更新集合内容的博客,冲冲冲!我是超梦。若有错误请指正,期待与你一起变好!
本文地址:https://blog.csdn.net/weixin_45834777/article/details/107332484
如对本文有疑问, 点击进行留言回复!!
springcloud中feign调用处理mybatis-plus Ipage反序列化问题。
Flume 史上最全面的大数据学习第十篇(一) 别再说不知道flume是什么了
网友评论