Home | History | Annotate | Download | only in tests
      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 @skip-test
     22 class 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