Add control over argument validation (continued)
class RootFactory {
static <T extends Root> make(Class<T> type) {
return type.newInstance();
...
}
}
Derived d = RootFactory.make(Derived.class)