我想知道如何在java中使用枚举的正确方法。 我已经实现了以下代码,它给出了一个错误。
public class GlobalVariables {
public enum Algorithm{louvain, kmeans};
public enum Evolution{survive,merge,split,dissolve};
/**
* GED alpha threshold
*/
public static float GED_INCLUSION_ALPHA = 0.5f;
/**
* GED beta threshold
*/
public static float GED_INCLUSION_BETA = 0.7f;}
你知道我可能做错了什么吗?
错误: 此行有多个标记
- louvain无法解析为
- 'enum'不应该用作标识符,因为它是来自源的保留关键字
等级1.5- 语法错误,插入“;”完成BlockStatements
- 语法错误,插入“;”完成ClassBodyDeclarations
- 枚举无法解析为类型
- 枚举无法解析为类型
- 'enum'不应该用作标识符,因为它是来自源的保留关键字
等级1.5- 令牌“,”上的语法错误,删除此令牌
答案 0 :(得分:5)
此错误:
'枚举'不应该用作标识符,因为它是源级别1.5上的保留关键字
似乎暗示您正在使用源版本进行编译< 1.5。并且在Java 1.5中引入了枚举。
检查编译器或IDE设置。
或者,某些代码中可能存在语法错误,但您未在问题中显示。
答案 1 :(得分:1)
我已检查过您在此处发布的代码。它与编译器java 1.5及更高版本一起工作正常。 永远记住enum是在java 5中引入的,所以如果您使用的话,请检查IDE中的编译器设置,或者您可以从终端检查编译器版本。
java -version
您可以查看有关枚举的更多信息;如何在java中使用enum以及Walking Techie
中有关它的更多详细信息答案 2 :(得分:-1)
我会看到你的枚举与开关一起使用; 基于算法(类型),我们为Algorithm接口选择一个特定的实现,它包含一个方法:executeAlgorithm,我们可以在线下进一步调用。
以下代码正在编译并在Java 1.6及更高版本中工作(请检查您的java版本导致枚举在1.5中添加)
public class GlobalVariables {
interface Algorithm {
void executeAlgorithm();
}
public enum AlgorithmType {louvain, kmeans}
public enum Evolution {survive, merge, split, dissolve}
/**
* GED alpha threshold
*/
public static float GED_INCLUSION_ALPHA = 0.5f;
/**
* GED beta threshold
*/
public static float GED_INCLUSION_BETA = 0.7f;
public static void main(String[] args) {
AlgorithmType algorithmType = AlgorithmType.louvain; //initialize it from somewhere
Algorithm algorithm = null;
switch (algorithmType) {
case louvain: {
algorithm = new LouvainAlgorithmImplementation();
break;
}
case kmeans: {
algorithm = new KMeansAlgorithmImplementation();
break;
}
default: {
// do something for default;
algorithm = new DefaultAlgorithmImplementation();
}
}
algorithm.executeAlgorithm();
}
static class LouvainAlgorithmImplementation implements Algorithm {
@Override
public void executeAlgorithm() {
System.out.println("Louvain was called");
}
}
static class KMeansAlgorithmImplementation implements Algorithm {
@Override
public void executeAlgorithm() {
System.out.println("KMeans was called");
}
}
static class DefaultAlgorithmImplementation implements Algorithm {
@Override
public void executeAlgorithm() {
System.out.println("Default was called");
}
}
}