JShell does not support sealed types properly, e.g.:
---
jshell> sealed class B permits I {}
| created class B, however, it cannot be referenced until class I is declared
jshell> final class I extends B {}
| Warning:
| Modifier 'final' not permitted in top-level declarations, ignored
| final class I extends B {}
| ^---^
| created class I, however, it cannot be referenced until class B is declared and this error is corrected:
| Modifier 'final' not permitted in top-level declarations, ignored
| final class I extends B {}
| ^---^
jshell> class I extends B {}
| modified class I, however, it cannot be referenced until class B is declared
---
---
jshell> sealed class B permits I {}
| created class B, however, it cannot be referenced until class I is declared
jshell> final class I extends B {}
| Warning:
| Modifier 'final' not permitted in top-level declarations, ignored
| final class I extends B {}
| ^---^
| created class I, however, it cannot be referenced until class B is declared and this error is corrected:
| Modifier 'final' not permitted in top-level declarations, ignored
| final class I extends B {}
| ^---^
jshell> class I extends B {}
| modified class I, however, it cannot be referenced until class B is declared
---
- duplicates
-
JDK-8243577 odd set of errors in jshell with sealed classes
- Closed
- relates to
-
JDK-8247456 JShell: Handling of top-level final, abstract, and static modifiers
- Resolved
-
JDK-8273257 jshell doesn't compile a sealed hierarchy with a sealed interface and a non-sealed leaf
- Resolved