将Scala Case对象用于Java枚举?

时间:2014-07-03 15:47:58

标签: java scala enums dry scala-java-interop

假设我有以下object

object CaseObjs {
  trait Person
  case object Female extends Person
  case object Male extends Person
}

出于Don't Repeat Yourself的目的,我想在Java中使用这些CaseObjs.Male and .Female作为类似Enum的数据结构。

换句话说,我想在Java中使用这些case object,而不是创建一个复制代码的新Java enum

我可以这样做吗?

2 个答案:

答案 0 :(得分:0)

简答:不。另见this question

根据this old post on scala-lang,实现互操作性的最佳方法是在Java中声明枚举。我没有找到任何理由相信自那时以来发生了变化。

使用不同的Scala变体会使您的Java代码看起来很糟糕,并且使用Scala的Java枚举很简单。

答案 1 :(得分:-1)

你的意思是你想索引一个密封班的所有孩子?然后我认为this post会对你有所帮助。确保实现假定该类的所有子项都是直接继承case对象。如果这些孩子不需要具体实施,也可以使用scala.Enumeration