Scala / Java枚举 [英] Scala/Java enumerations
本文介绍了Scala / Java枚举的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
I've read this and this, but I still don't understand the (idiomatic) equivalent way to do this in Scala
enum Status {
OK(1, "Ok", "Okay"),
NOT_OK(5, "Not Ok", "Not Okay")
BAD(10, "Bad", "Run for your life")
int code;
String name;
String description; // custom fields
Status(int code, String name, String description) {
this.code = code;
this.name = name;
this.description = description;
}
}
class Main {
public static void main(String[] args) {
for(Status status : Status.values) { // iterate through them
doStuff(status);
}
}
private doStuff(Status status) {
System.out.println(status.description);
// and more
}
}
推荐答案
在Scala中,您可以创建一个接近Java的枚举的枚举结构。基本上,您需要做的只是扩展 scala.Enumeration类,并且如果您需要更复杂的类作为枚举,则扩展Val类。否则,您可以使用默认的Val类,它使用Int或String或Both。下面是您的Java代码的Scala版本。
In Scala you can create a Enumeration structure which is close to "enum" from Java. Basically, what you need to do is just to extend a scala.Enumeration class and to extend a Val class if you need a more complicated class as a enum. Otherwise, you can use default Val class which takes Int or String or Both. Below, is a Scala version of your Java code.
object Status extends Enumeration {
case class StatusVal(code: Int, name: String, description: String) extends Val
val OK = StatusVal(1, "Ok", "Okay")
val NOT_OK = StatusVal(1, "Not Ok", "Not Okay")
val BAD = StatusVal(1, "Bad", "Run for your life")
}
object Application extends App {
Status.values foreach (s => println(s.asInstanceOf[StatusVal].description))
}
这篇关于Scala / Java枚举的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文