
00:00:00
外卖卷:非常划算 扫码领劵 省点小钱钱
枚举是一组常量的集合,可以将其理解为一种特殊的类,其中仅包含一组有限且特定的对象。
自定义类实现枚举
new 实例化,确保枚举对象的唯一性。set 方法:枚举对象通常是只读的,不需要修改属性值。public static final 修饰,使其可被外部访问。public class EnumExample {
public static void main(String[] args) {
System.out.println(Season.AUTUMN);
System.out.println(Season.SPRING);
}
}// 自定义枚举类
final class Season {
private final String name;
private final 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;
}
@Override
public String toString() {
return name + "(" + desc + ")";
}
}秋天(凉爽)
春天(温暖)
进程已结束,退出代码为 0enum 关键字实现枚举
Enum 类:enum 定义的枚举类默认继承 Enum,并且是 final 类,无法被继承。enum 直接定义枚举对象,无需手动创建 public static final 变量,提高可读性和安全性。enum 类型的构造方法默认是 private,无法在外部实例化,确保枚举对象的唯一性。, 分隔,若后续有其他代码,需以 ; 结束。()。public class EnumExample {
public static void main(String[] args) {
System.out.println(Season.AUTUMN);
System.out.println(Season.SPRING);
}
}// 使用 enum 关键字定义枚举
enum Season {
SPRING("春天", "温暖"),
WINTER("冬天", "寒冷"),
AUTUMN("秋天", "凉爽"),
SUMMER("夏天", "炎热");
private final String name;
private final String desc;
// 构造方法(私有)
Season(String name, String desc) {
this.name = name;
this.desc = desc;
}
public String getName() {
return name;
}
public String getDesc() {
return desc;
}
@Override
public String toString() {
return name + "(" + desc + ")";
}
}秋天(凉爽)
春天(温暖)
进程已结束,退出代码为 0enum 定义的枚举类是一种引用类型。equals() 方法,如果使用 == 比较,它比较的是两个引用类型的变量是否是同一个对象。enum 类型可以例外。因为 enum 类型的每个常量在 JVM 中只有一个唯一实例,所以可以直接用 == 比较。使用关键字
enum时,会隐式继承Enum类,这样我们就可以使用Enum类相关的方法。
| 方法 | 描述 |
|---|---|
name() | 获取当前枚举常量的名称,通常建议优先使用 toString() |
ordinal() | 获取当前枚举常量的次序(即声明的顺序) |
values() | 获取当前枚举类中所有的常量 |
valueOf() | 传递枚举类型的 Class 对象和枚举常量名称给静态方法 valueOf,会返回与参数匹配的枚举常量 |
toString() | 返回当前枚举常量的名称。可以通过重写此方法来使得到的结果更易读 |
equals() | 在枚举类型中,通常使用 == 来比较两个枚举常量是否相等。Enum 提供的 equals() 方法也使用 == 实现。它在 Set、List 和 Map 中使用时更加方便。注意,equals() 是不可变的 |
hashCode() | Enum 实现了 hashCode(),以保证和 equals() 方法的一致性。它也是不可变的 |
getDeclaringClass() | 获取枚举常量所属枚举类型的 Class 对象,可用于判断两个枚举常量是否属于同一个枚举类型 |
compareTo() | 枚举类型实现了 Comparable 接口,允许比较两个枚举常量的大小(根据声明顺序) |
clone() | 枚举类型不能被克隆。为了防止子类实现 clone 方法,Enum 实现了一个抛出 CloneNotSupportedException 异常的不变 clone 方法 |
注解(Annotation)也被称为元数据(Metadata),用于修饰解释包、类、方法、属性、构造器、局部变量等数据信息。
和注释一样,注解不影响程序逻辑,但注解可以被编译或运行,相当于嵌入在代码中的补充信息。
在 JavaSE 中,注解的使用目的比较简单,例如标记过时的功能,忽略警告等。
在 JavaEE 中,注解占据了更重要的角色,例如用来配置应用程序的任何切面,代替 JavaEE 旧版中所遗留的繁冗代码和 XML 配置等。
@Override
@Override,方法仍然可以重写,但使用该注解能避免拼写错误或参数不匹配等问题。@Deprecated
@SuppressWarnings
元注解是用于修饰其他注解的注解,用来定义注解的作用范围、生命周期等。
@Retention:指定注解的生命周期。
RetentionPolicy.SOURCE:仅在源码中保留,编译后丢弃(不会写入 .class 文件)。RetentionPolicy.CLASS:默认值,编译时保留在 .class 文件中,但运行时不会加载到 JVM。RetentionPolicy.RUNTIME:运行时可用,不仅写入 .class 文件,JVM 也会保留,可通过反射获取。@Target:指定注解适用范围。
ElementType.METHOD:只能用于方法。ElementType.FIELD:只能用于字段(成员变量)。ElementType.TYPE:只能用于类、接口、枚举等。ElementType.CONSTRUCTOR:构造方法。ElementType.PARAMETER:方法参数。@Documented:使注解出现在 JavaDoc 中。
@Inherited:允许子类继承父类的注解。
@Inherited 标记的注解修饰,则子类自动继承该注解。
评论