• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1class GenericMethodArguments {
2
3    static class Items<T> {
4        public <Output extends T> Output apply(Transform<? super Items<T>, Output> t) {
5            return null;
6        }
7    }
8
9    static class Transforms {
10        public static <I, O> Transform<I, O> of(DoFn<I, O> fn) {
11            return null;
12        }
13    }
14
15    static class Transform<Input, Output> {}
16
17    static class DoFn<Input, Output> {}
18
19    static class MyFn1<T> extends DoFn<T, Long> {}
20
21    static class MyFn2 extends MyFn1<Integer> {}
22
23    private Items<Integer> items;
24
25    public void useCase1() {
26        items.apply(Transforms.of(new MyFn2()));
27    }
28
29    public void useCase2() {
30        items.apply(Transforms.of(new DoFn<Integer,Long>(){}));
31    }
32
33}
34