Let\'s say someone gives you a class, Super, with the following constructors:
Super
public class Super { public Super(); public Super(int arg)
Use static factories, and four private constructors.
class Foo { public static Foo makeFoo(arguments) { if (whatever) { return new Foo(args1); } else if (something else) { return new Foo(args2); } etc... } private Foo(constructor1) { ... } ... }