如果我没有弄错,在某些情况下,Java中的lambda将作为匿名类实例生成.例如,在此代码中,lambda需要从外部捕获变量:
final int local = 123456;
list.forEach(x -> System.out.println(x + local));
Run Code Online (Sandbox Code Playgroud)
这是否意味着垃圾收集器会将lambda声称为对象?
我有这种方法,生成一些点并添加到新列表.这样做的缺点是每次都会产生太多的物体.
现在,我想回归点消费者的消费者,例如:
PointConsumer { void apply(int x, int y); }
PointIterator { void apply(PointConsumer pc); }
Run Code Online (Sandbox Code Playgroud)
每次我生成一个点,我会连接一个新的lambda与旧的lambda:
pointIterator = pc -> { pointIterator.apply(pc); pc.apply(x, y); }
Run Code Online (Sandbox Code Playgroud)
这种方法比前一种方法更慢还是更多的内存消费者?如果差异更大或更小,请不要理会.