一、枚举
枚举的二种实现方式:
- 自定义类实现枚举
- 使用 enum 关键字实现枚举
自定义类实现枚举:
- 不需要提供set方法,一般情况枚举都为自读。
- 对枚举对象使用final + static 共同修饰
- 枚举对象名全部使用大写
- 枚举对象根据需要,也可以多个属性
- 构造器私有化
public class Home {
public static void main(String[] args) {
System.out.println(Season.AUTUMN.getName);
}
}
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 AUTUMN = new Season("秋天", "凉爽");
public static final Season SUMMER = new Season("夏天", "炎热");
// 构造器私有化
private Season(String name, String desc) {
this.name = name;
this.desc = desc;
}
public String getName() {
return name;
}
public String getDesc() {
return desc;
}
}
使用 enum 关键字实现枚举:
- 使用关键字 enum 替代 class
- public static final Season SPRING = new Season("春天", "温暖") 直接使用 SPRING("春天", "温暖") 解读 常量名(实参列表)
- 如果有多个常量(对象), 使用 ,号间隔即可
- 如果使用 enum 来实现枚举,要求将定义常量对象,写在前面
- 如果我们使用的是无参构造器,创建常量对象,则可以省略 ()
public class Home {
public static void main(String[] args) {
System.out.println(Season.AUTUMN.getName());
}
}
enum Season {
/** 如果使用 enum 来实现枚举,要求将定义常量对象,必须写在前面 */
SPRING("春天", "温暖"),
WINTER("冬天", "寒冷"),
AUTUMN("秋天", "凉爽"),
SUMMER("夏天", "炎热");
private String name;
private String desc;
private Season(String name, String desc) {
this.name = name;
this.desc = desc;
}
public String getName() {
return name;
}
public String getDesc() {
return desc;
}
}
- 使用 enum 关键字后,就不能再继承其它类了,因为 enum 会隐式继承 Enum,而 Java 是单继承机制
- enum 实现的枚举类,仍然是一个类,所以还是可以实现接口的.
二、注解
- 注解(Annotation)也被称为元数据(Metadata),用于修饰解释 包、类、方法、属性、构造器、局部变量等数据信息。
- 和注释一样,注解不影响程序逻辑,但注解可以被编译或运行,相当于嵌入在代码中的补充信息。
- 在 JavaSE 中,注解的使用目的比较简单,例如标记过时的功能,忽略警告等。在 JavaEE 中注解占据了更重要的角 色,例如用来配置应用程序的任何切面,代替 java EE 旧版中所遗留的繁冗代码和 XML 配置等
三个基本的 Annotation:
- @Override: 限定某个方法,是重写父类方法, 该注解只能用于方法
- @Deprecated: 用于表示某个程序元素(类, 方法等)已过时
- @SuppressWarnings: 抑制编译器警告
网友评论