| ▲ | tsimionescu 3 hours ago | ||||||||||||||||
Except this is completely wrong. First, a record can't extend anything, it's not even valid syntax, so a sealed class can't permit record subclasses. So no, it's not possible to create a Maybe<T> class in Java that can only represent a Some<T> or a None<T> record. You could do it with regular classes, or if it's ok for Maybe<T> to be an interface. Secondly, regardless of the sealing, nothing in any current or near future of Java prevents you from assigning `null` to any class of any kind you might create. So you can always have `Maybe<T> x = null`, or even `Some<T> x = null`. None of this will change with the adoption of value classes either. So no, there is absolutely no way in Java to create a real Optional/Maybe type that would guarantee that a variable is either an object of a given type or None. There is probably some way to do it for your specific project using annotation processors, of course, but that is very different from having built-in support. | |||||||||||||||||
| ▲ | munksbeer 35 minutes ago | parent | next [-] | ||||||||||||||||
It's probably a typo. He meant sealed interface. I think that should be quite obvious. | |||||||||||||||||
| ▲ | gf000 2 hours ago | parent | prev [-] | ||||||||||||||||
Mistyped, it's sealed interface. > So you can always have `Maybe<T> x = null`, or even `Some<T> x = null`. Yeah and? Practically every type system have escape hatches, like Haskell can also do side effects without the IO monad, does it make the latter useless? | |||||||||||||||||
| |||||||||||||||||