/* | |
* package g5.m.def is the package to define (def) generic (g5) methods (m) | |
* | |
* We have 5 typical methods: | |
* - standard: not generic, parameters is generic type parameter | |
* - generic: multiple method type parameters | |
* - return generic type with multiple type arguments | |
* - method parameter which is several parameterized types | |
* - mix of all previous ones | |
*/ | |
package g5.m.def; | |
public class Multiple<T1, T2, T3> { | |
public void standard(T1 t1, T2 t2, T3 t3) { | |
} | |
public <U1, U2, U3> T1 generic(U1 u1, U2 u2, U3 u3) { | |
return null; | |
} | |
public Multiple<T1, T2, T3> returnParamType() { | |
return new Multiple<T1, T2, T3>(); | |
} | |
public void paramTypesArgs(Single<T1> st1, Single<T2> st2, Single<T3> st3, Multiple<T1, T2, T3> gmt) {} | |
public <U1, U2 extends Exception, U3 extends RuntimeException> Multiple<T1, T2, T3> complete(U1 u1, U2 u2, U3 u3, Multiple<T1, T2, T3> g) { | |
if (u1 == null || u2==null || u3==null) { | |
if (g == null) { | |
return null; | |
} | |
return g; | |
} else { | |
return new Multiple<T1, T2, T3>().returnParamType(); | |
} | |
} | |
} |