如何从Java传递Scala枚举
我有一个Scala/Java双语言项目,需要从Java传递Scala枚举如何从Java传递Scala枚举,java,scala,Java,Scala,我有一个Scala/Java双语言项目,需要从Java传递Scala枚举 object MonthSelection extends Enumeration { type MonthSelection = Value val LastMonth, ThisMonth, NextMonth, CustomMonth = Value } class MyClass { def doDateStuff(monthChosen: MonthSelection) = { //
object MonthSelection extends Enumeration {
type MonthSelection = Value
val LastMonth, ThisMonth, NextMonth, CustomMonth = Value
}
class MyClass {
def doDateStuff(monthChosen: MonthSelection) = {
// do stuff
}
}
我如何从Java中调用它?由于似乎无法导入scala.Enumeration.Value,因此出现编译错误
MyClass myClass = new MyClass();
myClass.doStuff(MonthSelection.ThisMonth);
如果有疑问,请查看生成的字节码。:) 好的,简单。所有这些枚举都是公共静态方法。我只需要导入scala.Enumeration并直接调用这些方法
$> cat Some.java
import scala.Enumeration;
public class Some {
public static void main(String args[]) {
System.out.println("Hello!");
System.out.println(MonthSelection.CustomMonth());
}
}
$> javac -cp $SCALA_HOME/lib/scala-library.jar:bin/ -d bin Some.java
$> ls bin
MonthSelection$.class MonthSelection.class Some.class
$> java -cp $SCALA_HOME/lib/scala-library.jar:bin Some
Hello!
CustomMonth
希望这能给你提供更多的想法。:)
$> cat Some.java
import scala.Enumeration;
public class Some {
public static void main(String args[]) {
System.out.println("Hello!");
System.out.println(MonthSelection.CustomMonth());
}
}
$> javac -cp $SCALA_HOME/lib/scala-library.jar:bin/ -d bin Some.java
$> ls bin
MonthSelection$.class MonthSelection.class Some.class
$> java -cp $SCALA_HOME/lib/scala-library.jar:bin Some
Hello!
CustomMonth