1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| public interface FFoo<T1, T2> {
T1 getValue();
void accept(T2 t2);
}
public class Foo<T> implements FFoo<T, T> {
T value;
T getValue() {
return value;
}
void accept(T t) {
}
}
public class Bar<A> {
A value;
<B> B bar(FFoo<B, ? super A> foo) {
foo.accept(value);
return foo.getValue();
}
public static void main(String[] args) {
Bar<Integer> bar = new Bar<Integer>();
bar.value = 1;
Foo<Number> foo = new Foo<Number>();
foo.value = 2;
Number n = bar.bar(foo);
}
} |
Partager