Examples of flexible constructors (JEP 447) and the more recent JEP (Flexible constructors).
class Named {
String name;
Named(String name) {
this.name = name;
}
}
class Student extends Named {
Student(String name) {
Objects.requireNonNull(name); // before !
super(name);
}
}
class A {
A() {
super();
this.m(); // ooops !!!
}
void m() { }
}
class B extends A {
int value;
B(int value) {
this.value = value; // before !
super();
}
@Override void m() {
System.out.println(value);
}
}
This second feature is not yet implemented !
Check preconditions before super(...)
Initialize field before super(...)