Java 枚举类型字段名为 "float"

3
我有一个代码生成器,可以根据用户定义的名称生成枚举。然而,如果用户定义了一个包含诸如 "float"、"switch" 或其他编译器特定关键字字段的枚举,Java 就会报错。
例如,我想定义一个包含两个字段 "float" 和 "switch" 的枚举:
public enum TestEnum {
    float(100), switch(200);
}

然而,Java认为它是某个浮点变量,并且根本不理解switch变量。在C语言中(如果我没有弄错的话),这并不会造成问题。
enum TestEnum {
    float  = 100,
    switch = 200,
};

在枚举中可以使用这样的“名称”吗?


Java的命名约定现在已经得到很好的建立和广泛认可。像枚举类型这样的常量字段,采用你目前使用的方式(全小写)是彻底不标准和高度不可取的。请注意,如果您按照已经建立的约定来命名字段,您的问题就会消失。 - scottb
3个回答

3

floatswitch是Java中的关键字,不能用作enum值。我建议按照惯例将它们大写(例如FLOATSWITCH)。

public enum TestEnum {
    FLOAT(100),
    SWITCH(200);

    TestEnum(int value) {

    }
}

1

1
在C和C++中,这些关键字(以及其他所有关键字)不能用作标识符(声明)。虽然标准库中的类型名称和(对于C ++)类名称可以重新使用(尽管通常会令人困惑和不明智),但它们都是全小写的,例如time_t fpos_t string vector<T>,因此类似于关键字,而Java标准库的类名则具有大写字母,例如File ArrayList,使它们在视觉上与关键字不同。
Pascal和Ada一般也保留关键字,但没有这两个特定的关键字。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接