Использовать объекты случая Scala для перечислений Java?

1

Скажем, у меня есть следующий 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, которое дублирует код.

Я могу сделать это?

  • 0
    Вы знаете, являются ли макросы единственным способом? Я благодарен за ответ, но я ничего не знаю о макросах, поэтому реализация java enum для моей черты Person , согласно приведенному выше примеру, может быть приемлемой опцией, учитывая мое незнание макросов.
Показать ещё 5 комментариев
Теги:
enums
dry
scala-java-interop

2 ответа

0

Краткий ответ: Нет. См. Также этот вопрос

Согласно этому старому сообщению на scala-lang, лучший способ добиться интероперабельности - объявить перечисление на Java. Я не нашел причин полагать, что с тех пор изменилось.

Использование разных вариантов Scala сделает ваш Java-код плохой, а использование перечней Java из Scala прямолинейно.

-1

Вы хотите, чтобы вы индексировали всех детей запечатанного класса? Тогда я думаю, что этот пост поможет вам. Убедитесь, что в реализации предполагается, что все дочерние элементы класса являются непосредственно наследующими объектами. Также scala.Enumeration может использоваться, если эти дети не нуждаются в конкретной реализации.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню