我宣布枚举为:
enum Sex {MALE,FEMALE};
Run Code Online (Sandbox Code Playgroud)
然后,迭代枚举,如下所示:
for(Sex v : Sex.values()){
System.out.println(" values :"+ v);
}
Run Code Online (Sandbox Code Playgroud)
我检查了Java API但找不到values()方法?我很好奇这个方法来自哪里?
API链接:https: //docs.oracle.com/javase/8/docs/api/java/lang/Enum.html
我有这样的枚举:
public enum Configuration {
XML(1),
XSLT(10),
TXT(100),
HTML(2),
DB(20);
private final int id;
private Configuration(int id) {
this.id = id;
}
public int getId() { return id; }
}
Run Code Online (Sandbox Code Playgroud)
有时我需要检查枚举中有多少个字段.什么是最好的解决方案?我应该使用方法"values().length"吗?或许,我必须在枚举中创建常量字段,如下所示:
public enum Configuration {
XML(1),
XSLT(10),
TXT(100),
HTML(2),
DB(20);
private final int id;
private Configuration(int id) {
this.id = id;
}
public int getId() { return id; }
public static final int Size = 5;
}
Run Code Online (Sandbox Code Playgroud)
什么是最快,更优雅的解决方案?
我正在尝试String使用以下函数扩展类型的枚举类,但我无法在调用站点使用它,如下所示:
fun <T: Enum<String>> Class<T>.join(skipFirst: Int = 0, skipLast: Int = 0): String {
return this.enumConstants
.drop(skipFirst)
.dropLast(skipLast)
.map { e -> e.name }
.joinToString()
}
MyStringEnum.join(1, 1);
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?