我的工作场所正在尝试将某些任务从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
}
}
}
然后,当任务完成时,我们可以看到
BAD_THING: 230
GOOD_THING: 10345
有没有办法在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
class Enum in package lang where target is defined