Alternatively (in particular for subclassing), it can always be worked around with an intermediate object. For example:
Constructor(A a, B b) { … }
Constructor(C c, D d)
{
// A and B can be derived from C and D, and
// we want to forward to the (A, B) constructor,
// so we use an intermediate object to do the
// conversion and provide A and B:
this(new Intermediate(c, d));
}
private Constructor(Intermediate x)
{
this(x.a, x.b);
}
Of course, with the JEP this will become much simpler.