[email protected]
Java 14 - Records
● In Java 15, with sealed classes, this should be possible:
sealed interface Expr permits AddExpr, ConstExpr, ... {}
record ConstExpr(int value) implements Expr {}
record AddExpr(Expr a, Expr b) implements Expr {}
int eval(Expr expr) {
return switch (expr) {
case ConstExpr(int v) -> v;
case AddExpr(Expr lt, Expr rt) -> eval(lt) + eval(rt);
...
}