名为“的Java枚举字段”;浮动;

名为“的Java枚举字段”;浮动;,java,enums,Java,Enums,我有一个代码生成器,它根据一些用户定义的名称生成枚举。出于某种原因,如果用户使用字段定义枚举,例如“float”、“switch”或其他特定于编译器的关键字,Java会抱怨 例如,我想用两个字段“float”和“switch”定义一个枚举: 然而,Java认为它是一个浮点变量,它根本不理解switch变量 在C中(如果我没有弄错的话),这没有问题 enum TestEnum { float = 100, switch = 200, }; 是否可以对枚举使用这样的“名称” fl

我有一个代码生成器,它根据一些用户定义的名称生成枚举。出于某种原因,如果用户使用字段定义枚举,例如“float”、“switch”或其他特定于编译器的关键字,Java会抱怨

例如,我想用两个字段“float”和“switch”定义一个枚举:

然而,Java认为它是一个浮点变量,它根本不理解switch变量

在C中(如果我没有弄错的话),这没有问题

enum TestEnum {
    float  = 100,
    switch = 200,
};

是否可以对枚举使用这样的“名称”

float
switch
是Java中的关键字,不能用作
enum
值。我建议遵循以下约定并使其大写(即
浮点
开关

这在java中是不可能的。


代码风格意味着使用EnUM常数的上(除以必要的话)的名称。

C和C++相同:这些关键字(和所有其他关键字)不能用作标识符。虽然标准库中的类型和(对于C++)类的名称(可以重复使用)(尽管这样做通常会让人感到困惑和不明智)都较低,比如

time\t fpos\t string vector
,因此类似于关键字,而Java标准库类名有大写字母,如
File ArrayList
,这使得它们明显不同


Pascal和Ada通常也保留关键字,但没有这两个关键字

Java命名约定现在已经建立并被广泛接受。以您拥有的方式命名常量字段(如枚举)(全部小写)是完全不标准的,也是非常不可取的。请注意,如果根据已建立的约定命名字段,则问题将消失。
enum TestEnum {
    float  = 100,
    switch = 200,
};
public enum TestEnum {
    FLOAT(100),
    SWITCH(200);

    TestEnum(int value) {

    }
}