假设我有以下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
。
我可以这样做吗?
答案 0 :(得分:0)
简答:不。另见this question
根据this old post on scala-lang,实现互操作性的最佳方法是在Java中声明枚举。我没有找到任何理由相信自那时以来发生了变化。
使用不同的Scala变体会使您的Java代码看起来很糟糕,并且使用Scala的Java枚举很简单。
答案 1 :(得分:-1)
你的意思是你想索引一个密封班的所有孩子?然后我认为this post会对你有所帮助。确保实现假定该类的所有子项都是直接继承case对象。如果这些孩子不需要具体实施,也可以使用scala.Enumeration
。