E157: Java Enum은 확장할 수 없어요

E157: Java Enum은 확장할 수 없어요 (Cannot Extend Java Enum)

클래스가 java.lang.Enum을 직접 상속하려 할 때 발생하는 에러예요. Scala 3에서는 enum 구문으로 정의된 enum만 Java의 Enum 클래스를 상속할 수 있어요.

출처: Scala 3 Reference

본문

이 제약 덕분에 Scala enum이 올바른 의미를 따르고, 컴파일러가 제공하는 완전성 검사(exhaustiveness checking)와 다른 enum 전용 기능을 온전히 누릴 수 있어요.

Example

class MyEnum extends java.lang.Enum[MyEnum]

Error

-- [E157] Syntax Error: example.scala:1:6 --------------------------------------
1 |class MyEnum extends java.lang.Enum[MyEnum]
  |      ^
  |class MyEnum cannot extend java.lang.Enum: only enums defined with the enum syntax can

Solution

// Use Scala 3 enum syntax instead
enum MyEnum {
  case Value1, Value2, Value3
}
// For Java interop, Scala 3 enums automatically extend java.lang.Enum
enum Color {
  case Red, Green, Blue
}

// Color cases are instances of java.lang.Enum[Color]

더 알아보기

  • Scala 3 enum과 Java 상호운용에 대한 자세한 내용은 Scala 3 Reference의 enum 문서를 참고하세요.