package g5.m.ref; import g5.m.def.*; public class RefMultiple { // Test methods calls void test() { Multiple<Object, Exception, RuntimeException> gm = new Multiple<Object, Exception, RuntimeException>(); // Test reference to a standard method gm.standard(new Object(), new Exception(), new RuntimeException()); // Test reference to a generic method gm.<Object, Exception, RuntimeException>generic(new Object(), new Exception(), new RuntimeException()); // Test reference to a method returning a parameterized type gm = gm.returnParamType(); // Test reference to a method with parameterized type arguments gm.paramTypesArgs(new Single<Object>(), new Single<Exception>(), new Single<RuntimeException>(), gm); // Test reference to a generic method returning a param type with param type parameters (=full) gm = gm.<Object, Exception, RuntimeException>complete(new Object(), new Exception(), new RuntimeException(), gm); } // Test methods calls to a generic parameterized with ? void testUnbound() { Multiple<?,?,?> gm = new Multiple(); gm.paramTypesArgs(new Single<Object>(), new Single<Object>(), new Single<Object>(), gm); gm = gm.returnParamType(); } // Test methods calls to a generic parameterized with ? extends Throwable void testExtends() { Multiple<Object, ? extends Throwable, ? extends Exception> gm = new Multiple<Object, Exception, RuntimeException>(); gm.<Object, RuntimeException, RuntimeException>generic(new Object(), new RuntimeException(), new RuntimeException()); gm.paramTypesArgs(new Single<Object>(), new Single<Throwable>(), new Single<Exception>(), gm); gm = gm.returnParamType(); gm = gm.<Object, RuntimeException, RuntimeException>complete(new Object(), new RuntimeException(), new RuntimeException(), gm); } // Test methods calls to a generic parameterized with ? super RuntimeException void testSuper() { Multiple<Object, ? super RuntimeException, ? super IllegalMonitorStateException> gm = new Multiple<Object, Exception, RuntimeException>(); gm.<Object, RuntimeException, IllegalMonitorStateException>generic(new Object(), new RuntimeException(), new IllegalMonitorStateException()); gm.paramTypesArgs(new Single<Object>(), new Single<RuntimeException>(), new Single<RuntimeException>(), gm); gm = gm.returnParamType(); gm = gm.<Object, RuntimeException, IllegalMonitorStateException>complete(new Object(), new RuntimeException(), new IllegalMonitorStateException(), gm); } }