Java versions

versions10Java25FlexibleConstructors

Path
pkg2versions/versions10Java25FlexibleConstructors.java
Package
pkg2versions
Study order
10
Run
Single-file source launch
Command
java pkg2versions/versions10Java25FlexibleConstructors.java
Version in the filename
Java 25
Example
Java 25 example
Requires
Java 25

There is no in-browser runner. This is the file from the curriculum, unchanged.

pkg2versions/versions10Java25FlexibleConstructors.java
1package pkg2versions;2 3/*4 * versions10Java25FlexibleConstructors.java5 * Flexible constructor bodies (JEP 513), final in Java 25.6 * Preview in Java 22, Java 23, and Java 24. Statements before super(...)7 * cannot use the object under construction.8 */9public class versions10Java25FlexibleConstructors {10    static class Named {11        final String name;12 13        Named(String name) {14            this.name = name;15        }16    }17 18    static class User extends Named {19        final int age;20 21        User(String name, int age) {22            if (age < 0) {23                throw new IllegalArgumentException("age");24            }25            super(name);26            this.age = age;27        }28    }29 30    public static void main(String[] args) {31        System.out.println(new User("ada", 36).name);32    }33}