Java 枚举中的特殊字符

Special Characters in Java Enums

目前正在尝试使用特殊字符,主要是“.”一个数字,但是,枚举似乎只需要字母。有没有办法使用特殊字符?目前正在尝试制作一个文件保护程序,许多文件类型中都有数字,例如:

public enum FileType {

    7z(".7z"),
    ace(".ace"),
    apk(".apk"),
    bz2(".bz2"),
    crx(".crx"),
    dd(".dd"),
    deb(".deb"),
    gz(".gz"),
    gzip(".gzip"),
    jar(".jar"),
    rar(".rar"),
    rpm(".rpm"),
    sit(".sit"),
    sitx(".sitx"),
    snb(".snb"),
    tar(".tar"),
    tar.gz(".tar.gz"),
    tqz(".tqz"),
    zip(".zip"),
    zipx(".zipx");

    public final String FILESUFFIX;

    FileType(String FileSuffix) {
        this.FILESUFFIX = FileSuffix;
    }

    public String getSuffix() {
        return FILESUFFIX;
    }
}

我查看了整个 Whosebug,但是,我还没有找到适合我的方法。我不明白如何做 'maps' 或其他花哨的东西,所以有没有另一种方法可以简单地将 mp4 之类的东西变成枚举?

在枚举 7z 中声明的这个值是无效的,就像你不能声明一个名为 7z 的变量一样,因为那将是一个 无效java标识符 https://docs.oracle.com/cd/E19798-01/821-1841/bnbuk/index.html

你可以使用下划线来替代,更好的方法是使用 UPPER_CASE

public enum FileType {

    _7Z(".7z"),
    _ACE(".ace"),
    _APK(".apk"),
    _BZ2(".bz2"),
    _CRX(".crx"),
    etc etc

枚举标识符遵循相同 rules as other Java identifiers:

The only allowed characters for identifiers are all alphanumeric characters([A-Z],[a-z],[0-9]), ‘$‘(dollar sign) and ‘_‘ (underscore).

Identifiers should not start with digits([0-9]). For example “123geeks” is a not a valid java identifier.

Java identifiers are case-sensitive

根据您的示例,mp4 是有效标识符,但 7z 不是(因为它以数字开头)

注意:按照惯例,枚举标识符通常全部大写。

package com.ecom.test;

enum SpecialChars {
    PIPELINE_SYMBOL("|"), FORWARD_SLASH("/");

    private String value;

    private SpecialChars(String value) {
        this.value = value;
    }

    public String toString() {
        return this.value; // will return , or ' instead of COMMA or APOSTROPHE
    }

}
public class Test1 {

    public static void main(String[] args) {

    
        System.out.println(SpecialChars.PIPELINE_SYMBOL);
        System.out.println(SpecialChars.FORWARD_SLASH);

        }
}