解释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
确保实例是唯一的。您不需要花费额外的精力来创建单例模式
上面的代码不仅是声明,它还使用三个字符串参数调用构造函数来创建