動的エージェントクラス
3889 ワード
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");
}
}