| // Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file | |
| // for details. All rights reserved. Use of this source code is governed by a | |
| // BSD-style license that can be found in the LICENSE file. | |
| public class DebugLambda { | |
| interface I { | |
| int getInt(); | |
| } | |
| private static void printInt(I i) { | |
| System.out.println(i.getInt()); | |
| } | |
| public static void testLambda(int i, int j) { | |
| printInt(() -> i + j); | |
| } | |
| private static void printInt2(I i) { | |
| System.out.println(i.getInt()); | |
| } | |
| public static void testLambdaWithMethodReference() { | |
| printInt2(DebugLambda::returnOne); | |
| } | |
| private static int returnOne() { | |
| return 1; | |
| } | |
| private static void printInt3(BinaryOpInterface i, int a, int b) { | |
| System.out.println(i.binaryOp(a, b)); | |
| } | |
| public static void testLambdaWithArguments(int i, int j) { | |
| printInt3((a, b) -> { | |
| return a + b; | |
| }, i, j); | |
| } | |
| interface ObjectProvider { | |
| Object foo(String a, String b, String c); | |
| } | |
| private static void testLambdaWithMethodReferenceAndConversion(ObjectProvider objectProvider) { | |
| System.out.println(objectProvider.foo("A", "B", "C")); | |
| } | |
| public static void main(String[] args) { | |
| DebugLambda.testLambda(5, 10); | |
| DebugLambda.testLambdaWithArguments(5, 10); | |
| DebugLambda.testLambdaWithMethodReference(); | |
| DebugLambda.testLambdaWithMethodReferenceAndConversion(DebugLambda::concatObjects); | |
| } | |
| private static Object concatObjects(Object... objects) { | |
| StringBuilder sb = new StringBuilder(); | |
| for (Object o : objects) { | |
| sb.append(o.toString()); | |
| } | |
| return sb.toString(); | |
| } | |
| interface BinaryOpInterface { | |
| int binaryOp(int a, int b); | |
| } | |
| } |