Java 11
toArrayวิธีการเริ่มต้นใหม่ในCollectionอินเตอร์เฟซช่วยให้องค์ประกอบของคอลเลกชันจะถูกโอนไปยังอาร์เรย์ที่สร้างขึ้นใหม่ของประเภทรันไทม์ที่ต้องการ มันต้องใช้เวลาIntFunction<T[]> generatorเป็นอาร์กิวเมนต์และสามารถใช้เป็น:
String[] array = set.toArray(String[]::new);
มีวิธีการที่คล้ายกันอยู่แล้วCollection.toArray(T[])และการเพิ่มนี้หมายความว่าเราไม่สามารถผ่านได้อีกต่อไปnullโต้แย้งเพราะในกรณีนั้นการอ้างอิงถึงวิธีนั้นจะคลุมเครือ แต่มันก็ยังไม่เป็นไรเพราะทั้งสองวิธีมี NPE อยู่แล้ว
Java 8
ใน Java 8 เราสามารถใช้ API สตรีม:
String[] array = set.stream().toArray(String[]::new);
นอกจากนี้เรายังสามารถใช้ประโยชน์จากtoArray ()รุ่นที่โอเวอร์โหลดซึ่งใช้IntFunction<A[]> generatorเป็น:
String[] array = set.stream().toArray(n -> new String[n]);
วัตถุประสงค์ของฟังก์ชั่นเครื่องกำเนิดไฟฟ้าที่นี่คือการใช้จำนวนเต็ม (ขนาดของอาเรย์ที่ต้องการ) และสร้างอาเรย์ของขนาดที่ต้องการ ฉันชอบวิธีการเดิมโดยใช้การอ้างอิงวิธีการกว่าวิธีภายหลังโดยใช้การแสดงออกแลมบ์ดา
toArray()วิธีการที่ระบุไว้อย่างชัดเจนใน Javadoc