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