Since generic tools are implemented in Java, erasing type information (in class C<T>, Tdisappears in the compiled .class file), the compiler does not know which class you are talking at runtime.
If you define F<T1>and F<T1,T2>load both of them, some class Ccannot identify the one that he wanted to use.
, , , Java.:\
, , - F<T>, T - , Pair<T1, T2>, ThreeTuple<T1, T2, T3> .. Scala .