ZengCode.Com (The Thai Php Framework)  


Home   Download   Manual   About us    

Facebook   


MAIN MENU
News
Php Tips
Android Programming
Design Pattern By PHP
C# using Linq น่าใช้จริงๆ
C# Tips & Technique
C# Design Pattern
Linux Quick Tips
Java & JavaScript Tips
Database & SQL
ZengCode Framework Guide
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

easy tracking
avis car rental discount code

This page took 0.150829 seconds to load.