動的エージェントクラス


package com.fanShe;



import java.lang.reflect.InvocationHandler;

import java.lang.reflect.Method;

import java.lang.reflect.Proxy;

/**

 *      : 

 *      :                            

 * @param args

 */

interface Persons{

    void walk();

    void sayHello(String name);

}



//                    ,          invoke   

class MyInvokationHandler implements InvocationHandler{



    /*

     *        

     * prox:         

     * method:           

     * args:      method        

     */

    public Object invoke(Object proxy,Method method, Object[] args){

        System.out.println("--       : "+method);

        if(args !=null){

            System.out.println("               : ");

            for(Object val : args){

                System.out.println(val);

            }

        }else {

            System.out.println("         !");

        }

        return null;

    }

}

public class ProxyTest {



    

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        InvocationHandler handler = new MyInvokationHandler();

        /*Proxy :              

         * 

         * Proxy.newProxyInstance(loader, interfaces, h)

         *              

         * loader:     

         * interface:    class   

         * h: InvocationHandler      

         */

        Persons p =(Persons)Proxy.newProxyInstance(Persons.class.getClassLoader(), new Class[]{Persons.class}, handler);

        p.walk();

        

        p.sayHello("shaoshao");

    }

}