掘金 后端 ( ) • 2024-04-26 13:41

前言

本文主要讲解Java的其他两个重要的技术点:枚举类(Enum)和注解(Annotation),这两个在平时开发中经常用于公共工程。

枚举类是一种特殊的类,用于定义一组常量(final variables)。通过使用enum关键字定义枚举类,每个枚举常量都是枚举类的一个实例,并且具有名称和值。枚举类可以直接使用其常量值,也可以通过调用其方法获取相关信息。

注解(Annotation)是Java 5引入的一个特性,它是一种元数据机制,用于提供有关代码的附加信息。注解不会直接影响代码的运行,但可以被编译器、运行时环境或框架使用,以实现各种功能。常见的注解示例包括@Override、@Deprecated、@SuppressWarnings等。要自定义注解,需要创建一个接口或抽象类,并使用@Target和@Retention注解来指定该注解可以用于哪些元素,并指定该注解在运行时是否可用

一、Java枚举类Enum

1.自定义枚举类

在Java中,枚举是一种特殊的类,它用于定义一组常量(final variables)。枚举类是通过关键字enum来定义的,每个枚举常量都是枚举类的一个实例,并且具有名称和值。

以下是一个自定义枚举类的示例:

public enum Season {  
    SPRING, SUMMER, AUTUMN, WINTER  
}

在这个例子中,Season是一个枚举类,SPRING、SUMMER、AUTUMN和WINTER是它的四个常量。

2.使用枚举类

枚举类可以直接使用其常量值,也可以通过调用其方法获取相关信息。

例如,使用上述的Season枚举类,我们可以这样使用:

Season currentSeason = Season.SUMMER;  
System.out.println(currentSeason.name()); // 输出 SUMMER  
System.out.println(currentSeason.compareTo(Season.SUMMER)); // 输出 0

3.Enum类的主要方法

  • name():返回该枚举常量的名称。
  • valueOf(String name):返回指定名称的枚举常量。
  • compareTo(E o):比较该枚举常量与指定枚举常量的顺序。
  • values():返回所有可能的枚举常量。实现接口的枚举类

二、注解(Annotation)概述

注解是Java 5引入的一个特性,它是一种元数据机制,用于提供有关代码的附加信息。注解不会直接影响代码的运行,但可以被编译器、运行时环境或框架使用,以实现各种功能。

注解在语法上是一种接口的成员,可以是方法、构造函数、字段或类。它们通常被用于提供元数据,例如标记代码的特定部分、约束类型、配置运行时行为等。

1.常见的Annotation示例

  1. @Override:标记一个方法是重写父类的方法。
  2. @Deprecated:标记一个方法或类已经过时,建议不要使用。
  3. @SuppressWarnings:抑制编译器对特定警告的警告。
  4. @Autowired:来自Spring框架,自动装配bean依赖。
  5. @PreAuthorize和@PostAuthorize:来自Spring Security框架,用于安全性的注解。

2.自定义Annotation

要自定义Annotation,需要遵循以下步骤:

  1. 创建一个接口或抽象类,用作注解的基类。
  2. 使用@Target和@Retention注解来指定该注解可以用于哪些元素(例如方法、类等),并指定该注解在运行时是否可用。
  3. 为注解添加属性,以便提供更多信息。可以使用Java的基本类型、枚举类型、Class类型、字符串、集合等类型作为注解的属性。可以使用default来设置属性的默认值。
  4. 创建一个实现了该接口的类,并重写其方法。在需要使用该注解的地方使用该类即可。

下面是一个自定义Annotation的示例:

import java.lang.annotation.*;  
  
@Target(ElementType.METHOD)  
@Retention(RetentionPolicy.RUNTIME)  
public @interface CustomAnnotation {  
    String value() default "default value";  
    int number() default 0;  
}

这个自定义Annotation可以用于标记方法,并为其提供value和number两个属性。默认情况下,value为"default value",number为0。在运行时,可以通过反射获取这些属性的值。

总结

Java枚举类(Enum)和注解(Annotation)都是Java语言中重要的特性,它们提供了一种方便的方式来定义常量、提供元数据信息和实现各种功能。一般开发中都会定义成公共的部分,其他工程共享调用,实现“低耦合”。