blob: 295873995600bd1a8884de7fad08d98694258b58 [file] [log] [blame]
interface Listener<A0, B0> {}
class Adapter<A, B> implements Listener<A, B> {}
class Super<O, B> {
public <C extends Adapter<O, B>> C apply(C configurer) throws Exception {
return null;
}
public <C extends Listener<O, B>> C apply(C configurer) throws Exception {
return null;
}
}
class AdapterImpl extends Adapter<String, String>{}
class Child<O, B> extends Super<O, B> {}
class D {
void foo(Child<String, String> ch, AdapterImpl a) throws Exception {
ch.apply(a);
}
}
class Test {
interface Listener<A0, B0> {}
class Adapter<A, B> implements Listener<A, B> {}
class Super<O, B> {
public <C extends Adapter<O, B> & Runnable> C apply(C configurer) throws Exception {
return null;
}
public <C extends Listener<O, B> & Runnable> C apply(C configurer) throws Exception {
return null;
}
}
abstract class AdapterImpl extends Adapter<String, String> implements Runnable{}
class Child<O, B> extends Super<O, B> {}
class D {
void foo(Child<String, String> ch, AdapterImpl a) throws Exception {
ch.apply( a);
}
}
}
class Test1 {
class ResolveResult {
}
class A {
}
class B extends A {
}
abstract class AbstractResolver<K, V> {
}
abstract class Resolver<K> extends AbstractResolver<K, ResolveResult[]> {
}
public <T extends B> ResolveResult[] resolveWithCaching(T ref, Resolver<T> resolver) {
return null;
}
public <TRef extends A, TResult> TResult resolveWithCaching(TRef ref, AbstractResolver<TRef, TResult> resolver) {
return null;
}
{
Resolver<B> resolver = null;
B b = null;
resolveWithCaching(b, resolver);
}
}