3
แลมบ์ดานิพจน์สร้างวัตถุบนฮีปทุกครั้งที่ถูกประมวลผลหรือไม่?
เมื่อฉันทำซ้ำคอลเลกชันโดยใช้น้ำตาล syntactic ใหม่ของ Java 8 เช่น myStream.forEach(item -> { // do something useful }); นี่ไม่เทียบเท่ากับตัวอย่าง 'ไวยากรณ์เก่า' ด้านล่างใช่หรือไม่ myStream.forEach(new Consumer<Item>() { @Override public void accept(Item item) { // do something useful } }); สิ่งนี้หมายความว่ามีการสร้างConsumerวัตถุนิรนามใหม่บน heap ทุกครั้งที่ทำซ้ำคอลเลกชันหรือไม่ ใช้พื้นที่ของกองมากเท่าไร ความหมายของประสิทธิภาพการทำงานมีอะไรบ้าง มันหมายความว่าฉันควรใช้รูปแบบเก่าสำหรับลูปเมื่อวนซ้ำโครงสร้างข้อมูลหลายระดับขนาดใหญ่หรือไม่?