我目前正在练习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();
}
}
答案 0 :(得分:2)
Lambdas可以访问实例变量。由于fileCount
在发布的代码中不是本地的,因此应该可以从类中的任何lambda访问它。