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