[Java] Invoke : Java Method Dynamically (Reflection)
Dynamic Invocation เป็นการเขียนโปรแกรมให้เข้าถึงโครงสร้างของโค้ด เช่น การเรียก method, การเข้าถึง constructor, การอ้างถึง field ซึ่งก็อาจฟังดูปกติ แต่การเรียกใช้ที่ว่านี้ จะเป็นการทำงาน ณ ขณะ runtime ลองยกตัวอย่างแบบง่ายๆ ดูนะครับ ผมมีโปรแกรมที่จำเป็นจะต้องเรียก method ซ้ำๆ กัน โดยชื่อ method คล้ายๆ กัน มองๆแล้ว ก็เอ๊ะ จะเรียกด้วย for ได้ไหมนะ ??? initialProgram1(); initialProgram2(); initialProgram3(); initialProgram4(); initialProgram5(); ลักษณะความคิดข้างต้นคือ เรากำลังจะยุ่งกับโครงสร้างแล้วล่ะครับ และคำต่อไปที่อยากให้นึกถึงคือ "Reflection" การเขียน Java Reflection API ทำได้โดยผ่าน package java.lang.reflect.* ซึ่งมีอยู่แล้วใน JDK ครับ เรามาลองดูโค้ดที่ทำงานแบบเดียวกันด้วย reflection กันดูครับ Main obj = new Main(); for(int i=1; i <=5; ++i) { Method method = obj.getClass().getMethod("initialProgram"+i); ...