E157: Java Enum은 확장할 수 없어요
E157: Java Enum은 확장할 수 없어요 (Cannot Extend Java Enum)
클래스가 java.lang.Enum을 직접 상속하려 할 때 발생하는 에러예요. Scala 3에서는 enum 구문으로 정의된 enum만 Java의 Enum 클래스를 상속할 수 있어요.
본문
이 제약 덕분에 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 문서를 참고하세요.