假设我有如下接口:
public interface UnaryFunction<Ret, Arg> {
    public Ret invoke(Arg arg);
}
public interface BinaryFunction<Ret, Arg1, Arg2> {
    public Ret invoke(Arg1 arg, Arg2 arg);
}
现在假设我有一个像这样的包装类:
public class ConstructorWrapper<Ret> {
    // Wrapper for a java.lang.reflect.Constructor
    private final Constructor<Ret> constructor;
    // Try blocks in the following elided for brevity
    // Trying to implement UnaryFunction<Ret, Arg> with this
    public <Arg> Ret invoke(Arg arg) { return constructor.newInstance(arg); }
    // Trying to implement BinaryFunction<Ret, Arg1, Arg2> with this
    public <Arg1, Arg2> Ret invoke(Arg1 arg1, Arg2 arg2) { return constructor.newInstance(arg1, arg2); }
}
如何更改它以便ConstructorWrapper声明同时实现UnaryFunctionand BinaryFunction?更好的是,我如何做到这一点,以便传入一个单参数构造函数会导致一个ConstructorWrapper只实现的对象(或其中的子类),UnaryFunction而传入一个双参数构造函数会导致一个ConstructorWrapper只实现的对象BinaryFunction(即你不要'不要在BinaryFunction预期a 的地方传入一元构造函数)?最好尽量少重复?