我的工作场所一直在尝试从Java迁移到Scala执行某些任务,并且它适用于我们正在做的事情.但是,一些预先存在的测井方法需要一个java.lang.Enum.日志记录方法在(Java)基类中定义,子类可以定义自己的枚举,记录器将跟踪多个线程/机器中的所有实例.
它在Java中的工作原理如下:
public class JavaSubClass extends JavaBaseClass {
enum Counters {
BAD_THING,
GOOD_THING
}
public void someDistributedTask() {
// some work here
if(terribleThing) {
loggingMethod(Counters.BAD_THING)
} else {
loggingMethod(Counters.GOOD_THING)
// more work here
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后,当任务完成后,我们可以看到
BAD_THING: 230
GOOD_THING: 10345
Run Code Online (Sandbox Code Playgroud)
有没有办法在Scala中复制它,通过创建Java Enum或转换Enumeration为Enum?我试过Enum直接扩展,但它似乎是密封的,因为我在控制台中得到错误:
error: constructor Enum in class Enum cannot be accessed in object $iw
Access to protected constructor Enum not permitted because
enclosing object $iw is not a subclass of …Run Code Online (Sandbox Code Playgroud)