package Demo.java3.动态代理;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.regex.Pattern;
interface Jiekou
{
String L1(String a);
void L2();
}
class GeneralMethod
{
public void Method1()
{
System.out.println("===================方法1==================");
}
public void Method2()
{
System.out.println("===================方法2==================");
}
}
class ProsyClass implements Jiekou
{
@Override
public String L1(String a) {
System.out.println("你好我喜欢"+a);
return a;
}
@Override
public void L2() {
System.out.println("你好啊我是void空参数代理类");
}
}
class ProxyClass
{
static Object proxyclass(Object obj)
{
Achieve ac=new Achieve();
ac.setObj(obj);
Object o = Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), ac);
return o;
}
}
class Achieve implements InvocationHandler
{
private Object obj;
public void setObj(Object obj) {
this.obj = obj;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
{
GeneralMethod gm=new GeneralMethod();
gm.Method1();
Object o = method.invoke(obj, args);
gm.Method2();
return o;
}
}
public class 代理 {
public static void main(String[] args) {
ProsyClass pr=new ProsyClass();
Jiekou jk1 = (Jiekou) ProxyClass.proxyclass(pr);
String s = jk1.L1("你啊");
System.out.println(s);
jk1.L2();
}
}