| // Copyright (c) 2022, 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. | |
| package nest; | |
| public class NestLambda { | |
| private void print(Object o) { | |
| System.out.println("printed: " + o); | |
| } | |
| Inner getInner() { | |
| return new Inner(); | |
| } | |
| // Avoids java.util.Consumer to run below on Apis below 24. | |
| interface ThisConsumer<T> { | |
| void accept(T t); | |
| } | |
| class Inner implements Itf { | |
| void exec(ThisConsumer<String> consumer) { | |
| consumer.accept("inner"); | |
| } | |
| void execLambda() { | |
| exec(NestLambda.this::print); | |
| } | |
| } | |
| interface Itf { | |
| private void printItf(Object o) { | |
| System.out.println("printed from itf: " + o); | |
| } | |
| } | |
| void exec(ThisConsumer<String> consumer) { | |
| consumer.accept("here"); | |
| } | |
| void execItfLambda(Itf itf) { | |
| exec(itf::printItf); | |
| } | |
| public static void main(String[] args) { | |
| new NestLambda().getInner().execLambda(); | |
| new NestLambda().execItfLambda(new Itf() {}); | |
| } | |
| } |