Java : สร้าง Object และเรียก Method ตอนรันไทม์ ครับ (2009-04-02)
บางครั้งเราไม่สามารถระบุว่าเราจะสร้าง Class และเรียกใช้ Method ใดๆ ได้ตอน Complile Time
แล้วเราจะมีวิธีไหนที่จะให้สร้าง Object จาก Class ที่เราต้องการและเรียก Method ใดๆ ทำงานตอน Run Time ได้
นี่ก็เป็นอีกวิธีหนึ่งครับ ที่ใช้งานได้ แต่ไม่ทราบว่าดีหรือเปล่า ตัวอย่างนี้ผมลองผิดลองถูกเกือบครึ่งวันครับ ด้วยความที่
เป็นมือใหม่ Java ยังไงก็แนะนำด้วยนะครับ สำหรับผู้รู้ทั้งหลาย
1.ผมมี Class ที่ต้องการใช้งานตอน Run Time ดังนี้
package com.chiwa;
/**
*
* @author chiwa
*/
public class utility {
public String Getname()
{
return "Chiwa Kantawong";
}
} |
2.ผมสร้าง Factory Class สำหรับเรียกใช้ Class และ Method ตอนรันไทม์ ดังนี้ครับ
|
import java.lang.reflect.Method;
class CreateClassOnFly
{
private Class myclass = null;
public Object object = null;
public Method method = null;
public String error = null;
public void Create(String className,String methodName)
{
try {
myclass = Class.forName(className);
object = myclass.newInstance();
Method[] methods = myclass.getMethods();
error="NotFoundMethod:"+methodName;
for (int i = 0; i < methods.length; i++) {
if ( methods[i].getName().startsWith(methodName) ) {
method = methods[i];
error=null;
}
}
} catch (Exception ex) {
error = ""+ ex;
}
}
}//end class
|
3.อ่ะแล้ววิธีใช้ล่ะ ตามนี้เลยครับ
CreateClassOnFly p = new CreateClassOnFly();
p.Create("com.chiwa.utility","Getname");
if (p.error == null) {
String pee = (String) (p.method).invoke(p.object);
out.print(pee);
}else{
out.print(p.error);
} |
ง่ายไหมครับ ยังไงก็ลองเอาไปประยุกต์ดูนะครับ ว่าจะเหมาะกับงานของท่านตรงไหนได้
ผมก็ได้ตัวอย่างมาจาก http://www.javadb.com/instantiate-unknown-class-at-runtime-and-call-the-object-methods น่ะครับ
ลองเอาไปประยุกต์ใช้ดูใช้ได้ยังไงแล้วมาเม้นบอกผมด้วยนะครับ
|