• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1import java.lang.annotation.Target;
2import java.lang.annotation.ElementType;
3import java.util.ArrayList;
4import java.util.Arrays;
5import java.util.Iterator;
6import java.util.List;
7import java.util.function.Consumer;
8import java.util.function.Function;
9import java.util.function.IntBinaryOperator;
10import java.util.function.IntFunction;
11import java.util.function.Predicate;
12import java.util.function.Supplier;
13import java.util.function.ToIntBiFunction;
14
15@Target(ElementType.TYPE_USE) @interface A {}
16
17@Target(ElementType.TYPE_USE) @interface B {}
18
19@Target(ElementType.TYPE_USE) @interface C {}
20
21@skip-test
22class LambdaExpression {
23  //Single inferred-type parameter
24  IntFunction<Integer> f0 = (x) -> x+1;
25
26  //Parentheses optional for single inferred-type parameter
27  IntFunction<Integer> f1 = x -> x+1;
28
29  //Single declared-type parameter, expression body
30  IntFunction<Integer> f2 = (@A int x) -> x+1;
31
32  //Single declared-type parameter, block body
33  IntFunction<Integer> f3 = (@A int x) -> { return x+1; };
34
35  //Multiple declared-type parameters
36  IntBinaryOperator f4 = (@A int x, @B int y) -> x+y;
37
38  //Generic argument type
39  static final ToIntBiFunction<String[], List<? extends CharSequence>>
40  selectCommon = (@A String @B [] array,
41                  @A List<@B ? extends @C CharSequence> list) ->
42    {
43      int total = 0;
44      for (int i = 0; i < array.length; i++) {
45        Iterator<? extends CharSequence> iter = list.iterator();
46        String str = array[i];
47        while (iter.hasNext()) {
48          CharSequence seq = iter.next();
49          if (seq.toString().equals(str)) {
50            ++total;
51            iter.remove();
52            break;
53          }
54        }
55      }
56      return total;
57    };
58
59  public static void main(String[] args) {
60    String[] ss = {"a", "b"};
61    System.out.println(selectCommon.applyAsInt(args, Arrays.asList(ss)));
62  }
63}
64
65