ZengCode.Com (The Thai Php Framework)  


Home   Download   Manual   About us    

Facebook   


MAIN MENU
เขียนโปรแกรมบน iPhone ด้วย MonoTouch
News
Php Tips
Ubuntu
Spring+Strut+Hibernate
Android Programming
Design Pattern By PHP
C# Design Pattern
Linux Quick Tips
C# Tips & Technique
C# using Linq น่าใช้จริงๆ
Java & JavaScript Tips
MAVEN
Database & SQL
ZengCode Framework Guide
Mac OSx
Zeng Code Code
Programming
IPhone (Tips and Trick)

Download เอกสารที่น่าสนใจ

     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 น่ะครับ
ลองเอาไปประยุกต์ใช้ดูใช้ได้ยังไงแล้วมาเม้นบอกผมด้วยนะครับ

 


Comment
Name
Comment
Security CodeCAPTCHA Image

web hit counter

This page took 0.333521 seconds to load.