解释JAVA中的枚举定义

解释JAVA中的枚举定义,java,enums,Java,Enums,全部: 我在第一天阅读团队的代码(左边写的人…): 有一个枚举定义让我非常困惑: /** * Enum defines the processing stages and the order * */ public enum ProcessStage { /* * Individual stages in the process. * Order of processing is based on the order of listing. */

全部:

我在第一天阅读团队的代码(左边写的人…):

有一个枚举定义让我非常困惑:

/**
 * Enum defines the processing stages and the order
 *
 */
public enum ProcessStage {

    /*
     * Individual stages in the process.
     * Order of processing is based on the order of listing.
     */
    EXTRACT("Extraction", "EXTRACTED", "EXTRACTION_FAILED"), 
    ROUTE("Routing", "ROUTED", "ROUTE_FAILED"), 
    PUBLISH("Publishing", "PUBLISHED", "PUBLISH_FAILED");

    private String detailedName;
    private String successState;
    private String failedState;

    private ProcessStage(String detailedName, String successState, String failedState) {
        this.detailedName = detailedName;
        this.successState = successState;
        this.failedState = failedState;
    }
    public String getSuccessState() {
        return successState;
    }
    public String getFailedState() {
        return failedState;
    }

    /**
     * Factory method to provide the ProcessStage from its success or failed state value stored in DB.
     * @param state
     * @return ProcessStage
     */
    public static ProcessStage getProcessStage(String state) {
        for(ProcessStage ps: ProcessStage.values()) {
            if(ps.getSuccessState().equals(state) || ps.getFailedState().equals(state)) {
                return ps;
            }
        }

        return null;
    }

    public String toString() {
        return detailedName;
    }

}
我想知道是否有人给我一些简单的介绍如何阅读这个(比如它使用什么样的语法)?最令人困惑的是:

    EXTRACT("Extraction", "EXTRACTED", "EXTRACTION_FAILED"), 
    ROUTE("Routing", "ROUTED", "ROUTE_FAILED"), 
    PUBLISH("Publishing", "PUBLISHED", "PUBLISH_FAILED");
我不太明白这意味着什么以及如何使用它

为什么它里面定义了很多方法,以及如何使用带有枚举变量的方法


谢谢

请记住,在没有看到更多代码的情况下,我无法确切确定此特定枚举的用途。 所以,假设我们在某个地方有一个方法,在这里传递一个过程

public void doSomething(Process process) {}
现在,让我们假设此方法的目的是检查流程的状态,然后根据该结果执行一些逻辑。这将需要执行以下操作

public void doSomething(Process process) {
    if(ProcessStage.EXTRACT.equals(process.getStage()) {
        //do something here...you will have access to the methods within
        //the enum
    }
}

不知道更多,这就是我能给你的一切。我希望这能让您更好地理解该枚举正在做什么

请记住,在没有看到更多代码的情况下,我无法确切地确定这个特定枚举的用途。 所以,假设我们在某个地方有一个方法,在这里传递一个过程

public void doSomething(Process process) {}
现在,让我们假设此方法的目的是检查流程的状态,然后根据该结果执行一些逻辑。这将需要执行以下操作

public void doSomething(Process process) {
    if(ProcessStage.EXTRACT.equals(process.getStage()) {
        //do something here...you will have access to the methods within
        //the enum
    }
}

不知道更多,这就是我能给你的一切。我希望这能让您更好地理解该枚举正在做什么

请记住,在没有看到更多代码的情况下,我无法确切地确定这个特定枚举的用途。 所以,假设我们在某个地方有一个方法,在这里传递一个过程

public void doSomething(Process process) {}
现在,让我们假设此方法的目的是检查流程的状态,然后根据该结果执行一些逻辑。这将需要执行以下操作

public void doSomething(Process process) {
    if(ProcessStage.EXTRACT.equals(process.getStage()) {
        //do something here...you will have access to the methods within
        //the enum
    }
}

不知道更多,这就是我能给你的一切。我希望这能让您更好地理解该枚举正在做什么

请记住,在没有看到更多代码的情况下,我无法确切地确定这个特定枚举的用途。 所以,假设我们在某个地方有一个方法,在这里传递一个过程

public void doSomething(Process process) {}
现在,让我们假设此方法的目的是检查流程的状态,然后根据该结果执行一些逻辑。这将需要执行以下操作

public void doSomething(Process process) {
    if(ProcessStage.EXTRACT.equals(process.getStage()) {
        //do something here...you will have access to the methods within
        //the enum
    }
}
不知道更多,这就是我能给你的一切。我希望这能让您更好地理解enum正在做什么

枚举声明定义了一个类(称为枚举类型)。枚举 类主体可以包括方法和其他字段。编译程序 在创建枚举时自动添加一些特殊方法

枚举是类的特殊类型。我们可以在这些地方使用enum,而不是使用常规类创建单例模式或创建常量(如工作日)。这里

EXTRACT("Extraction", "EXTRACTED", "EXTRACTION_FAILED"), 
这里的
EXTRACT
是一个枚举常量,意味着它是类的实例以及所有其他枚举常量(路由、发布)。enum的所有Costant都是唯一的对象,这意味着它们是在jvm中创建的单例实例,
enum
确保实例是唯一的。您不需要花费额外的精力来创建单例模式

上面的代码不仅仅是声明,它还使用三个字符串参数调用构造函数来创建实例

  private ProcessStage(String detailedName, String successState, String failedState) {
        this.detailedName = detailedName;
        this.successState = successState;
        this.failedState = failedState;
    }
为什么里面定义了很多方法

因为它也是一个类,所以它可以像任何其他类一样拥有方法。但限制是,它不能被继承,因为enum在内部扩展了类

如何将方法与枚举变量一起使用

枚举声明定义了一个类(称为枚举类型)。枚举 类主体可以包括方法和其他字段。编译程序 在创建枚举时自动添加一些特殊方法

枚举是类的特殊类型。我们可以在这些地方使用enum,而不是使用常规类创建单例模式或创建常量(如工作日)。这里

EXTRACT("Extraction", "EXTRACTED", "EXTRACTION_FAILED"), 
这里的
EXTRACT
是一个枚举常量,意味着它是类的实例以及所有其他枚举常量(路由、发布)。enum的所有Costant都是唯一的对象,这意味着它们是在jvm中创建的单例实例,
enum
确保实例是唯一的。您不需要花费额外的精力来创建单例模式

上面的代码不仅仅是声明,它还使用三个字符串参数调用构造函数来创建实例

  private ProcessStage(String detailedName, String successState, String failedState) {
        this.detailedName = detailedName;
        this.successState = successState;
        this.failedState = failedState;
    }
为什么里面定义了很多方法

因为它也是一个类,所以它可以像任何其他类一样拥有方法。但限制是,它不能被继承,因为enum在内部扩展了类

如何将方法与枚举变量一起使用

枚举声明定义了一个类(称为枚举类型)。枚举 类主体可以包括方法和其他字段。编译程序 在创建枚举时自动添加一些特殊方法

枚举是类的特殊类型。我们可以在这些地方使用enum,而不是使用常规类创建单例模式或创建常量(如工作日)。这里

EXTRACT("Extraction", "EXTRACTED", "EXTRACTION_FAILED"), 
这里的
EXTRACT
是一个枚举常量,意味着它是类的实例以及所有其他枚举常量(路由、发布)。enum的所有Costant都是唯一的对象,这意味着它们是在jvm中创建的单例实例,
enum
确保实例是唯一的。您不需要花费额外的精力来创建单例模式

上面的代码不仅是声明,它还使用三个字符串参数调用构造函数来创建