blob: 007cd0cd3dcd33e0c388441835f0681f98734b7a [file] [log] [blame]
// 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);
}
}