在另一个

时间:2018-02-24 14:21:20

标签: java lambda java-8

我目前正在练习Akka演员。我正在编写一个代码来读取非常大的内容并打印字数。在下面给出的代码中,变量“fileCount”位于第一个lambda表达式中,我正在为它分配一些值。我想在第二个lambda表达式中使用该值。有可能吗?

public class MainMaster extends AbstractActor{
    private long startTime = System.currentTimeMillis();
    private int fileCount = 0;
    private int localCount = 0;

    @Override
    public Receive createReceive() {
        return receiveBuilder()
                .match(FileHashMap.class, f -> {
            System.out.println("\tCount \t||\tWords");
            System.out.println("-------------------------");
            fileCount = f.getFileHash().size()
            ActorRef master = this.getContext().actorOf(Props.create(Master.class, 10)
                                  .withRouter(new BalancingPool(fileCount);
            for(String file : f.getFileHash())
                master.tell(new FileManager(file), getSelf());
            })
            .match(String.class, s -> {
                localCount++;
                if(localCount >= fileCount) {
                    System.out.println(fileCount);
                    System.out.println("\n\n*******Time taken => "+(System.currentTimeMillis() - startTime)+"\n\n");

                }
            }
        ).build();
    }
}

1 个答案:

答案 0 :(得分:2)

Lambdas可以访问实例变量。由于fileCount在发布的代码中不是本地的,因此应该可以从类中的任何lambda访问它。