一个lambda表达式是否每次执行时都在堆上创建一个对象?
当我使用Java 8的新语法糖遍历集合时,如
myStream.forEach(item -> { // do something useful});
这不等同于下面的“旧语法”片段吗?
myStream.forEach(new Consumer<Item>() { @Override public void accept(Item item) { // do something useful }});
这是否意味着一个新的匿名者Consumer对象是在堆上每次迭代集合时创建的?这需要多少堆空间?它对性能有什么影响?这是否意味着我应该在大型多级数据结构上迭代时使用旧的循环样式?
Consumer
芜湖不芜
侃侃无极
相关分类