test/tools/javac/lambda/LambdaConv01.java

Print this page




  50     }
  51 
  52     interface VoidToInt {
  53       public int foo();
  54     }
  55 
  56     interface TU<T, U> {
  57       public T foo(U u);
  58     }
  59 
  60     public static <T, U> T exec(TU<T, U> lambda, U x) {
  61         return lambda.foo(x);
  62     }
  63 
  64     static {
  65         //Assignment conversion:
  66         VoidToInt f1 = ()-> 3;
  67         assertTrue(3 == f1.foo());
  68         //Covariant returns:
  69         TU<Number, Integer> f2 = (Integer x) -> x;
  70         assertTrue(3 == f2.foo(3));
  71         //Method resolution with boxing:
  72         int res = LambdaConv01.<Integer,Integer>exec((Integer x) -> x, 3);
  73         assertTrue(3 == res);
  74         //Runtime exception transparency:
  75         try {
  76             LambdaConv01.<Integer,Object>exec((Object x) -> x.hashCode(), null);
  77         }
  78         catch (RuntimeException e) {
  79             assertTrue(true);
  80         }
  81     }
  82 
  83     {
  84         //Assignment conversion:
  85         VoidToInt f1 = ()-> 3;
  86         assertTrue(3 == f1.foo());
  87         //Covariant returns:
  88         TU<Number, Integer> f2 = (Integer x) -> x;
  89         assertTrue(3 == f2.foo(3));
  90         //Method resolution with boxing:




  50     }
  51 
  52     interface VoidToInt {
  53       public int foo();
  54     }
  55 
  56     interface TU<T, U> {
  57       public T foo(U u);
  58     }
  59 
  60     public static <T, U> T exec(TU<T, U> lambda, U x) {
  61         return lambda.foo(x);
  62     }
  63 
  64     static {
  65         //Assignment conversion:
  66         VoidToInt f1 = ()-> 3;
  67         assertTrue(3 == f1.foo());
  68         //Covariant returns:
  69         TU<Number, Integer> f2 = (Integer x) -> x;
  70         assertTrue(3 == (Integer)f2.foo(3));
  71         //Method resolution with boxing:
  72         int res = LambdaConv01.<Integer,Integer>exec((Integer x) -> x, 3);
  73         assertTrue(3 == res);
  74         //Runtime exception transparency:
  75         try {
  76             LambdaConv01.<Integer,Object>exec((Object x) -> x.hashCode(), null);
  77         }
  78         catch (RuntimeException e) {
  79             assertTrue(true);
  80         }
  81     }
  82 
  83     {
  84         //Assignment conversion:
  85         VoidToInt f1 = ()-> 3;
  86         assertTrue(3 == f1.foo());
  87         //Covariant returns:
  88         TU<Number, Integer> f2 = (Integer x) -> x;
  89         assertTrue(3 == f2.foo(3));
  90         //Method resolution with boxing: