Скажем, у меня есть следующий object
:
object CaseObjs {
trait Person
case object Female extends Person
case object Male extends Person
}
Для целей " Don't Repeat Yourself
я хотел бы использовать эти CaseObjs.Male and.Female
как структуру данных, подобную Enum, в Java.
Другими словами, я хотел бы использовать этот case object
в Java, а не создавать новое enum
Java, которое дублирует код.
Я могу сделать это?
Краткий ответ: Нет. См. Также этот вопрос
Согласно этому старому сообщению на scala-lang, лучший способ добиться интероперабельности - объявить перечисление на Java. Я не нашел причин полагать, что с тех пор изменилось.
Использование разных вариантов Scala сделает ваш Java-код плохой, а использование перечней Java из Scala прямолинейно.
Вы хотите, чтобы вы индексировали всех детей запечатанного класса? Тогда я думаю, что этот пост поможет вам. Убедитесь, что в реализации предполагается, что все дочерние элементы класса являются непосредственно наследующими объектами. Также scala.Enumeration
может использоваться, если эти дети не нуждаются в конкретной реализации.
java enum
для моей чертыPerson
, согласно приведенному выше примеру, может быть приемлемой опцией, учитывая мое незнание макросов.