我想在Scala val
中使用object
作为Java中的编译时常量(特别是在开关中)。我的代码如下:
class Scala {} // in case it matters, there is a class of the same name
object Scala {
val foo = "foo"
}
class Java {
void switchIt(String on) {
switch (on) {
case Scala$.MODULE$.foo: // doesn't compile because foo isn't a field
case Scala$.MODULE$.foo(): // doesn't compile because foo() isn't a constant
}
}
}
我知道以下问题,但没有一个能解决我的问题:
val
被编译为方法final val
创建编译时常量;但是,尚不清楚Java是否将结果视为编译时常量,并且在我的情况下似乎不起作用有没有办法做到这一点?