动态代理的实现(基于匿名内部类)

简介: 动态代理的实现(基于匿名内部类)

1、写一个接口

public interface BuyPhoneService {
    void buyPhone(String phone);
}

2、实现接口

public class BuyPhoneServiceImpl implements BuyPhoneService {
    @Override
    public void buyPhone(String phone) {
        System.out.println("买"+ phone +"手机");
    }
}

3、编写匿名内部类并调用

public class Xc {
    public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException {
        BuyPhoneService buyPhoneService = new BuyPhoneServiceImpl();
        BuyPhoneService aa = (BuyPhoneService) Proxy.newProxyInstance(buyPhoneService.getClass().getClassLoader(), buyPhoneService.getClass().getInterfaces(),
                new InvocationHandler() {
                    @Override
                    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                        System.out.println("增强");
                        Object invoke = method.invoke(buyPhoneService, "华为");
                        System.out.println("增强");
                        return invoke;
                    }
                });
        aa.buyPhone("小米");
    }
}

相关文章
|
8月前
|
Java API 开发者
解密Java反射机制与动态代理
解密Java反射机制与动态代理
58 0
|
安全 C# 图形学
C#的反射机制
C#的反射机制
|
安全 Java
反射机制
反射机制(Reflection)是Java语言的一个特性,它允许程序在运行时检查和操作类、对象、方法和属性等。通过反射,我们可以在程序运行时动态地获取类的信息、调用对象的方法和访问对象的属性,而无需在编译时确定这些信息。
72 1
|
Java 数据库连接 API
什么是反射机制
什么是反射机制
105 0
|
Java 编译器 Android开发
面向对象构造方法、抽象类、内部类
面向对象构造方法、抽象类、内部类
|
设计模式 Java 程序员
静态代理和动态代理区别(是否有实现类)
静态代理和动态代理区别(是否有实现类)
378 0
静态代理和动态代理区别(是否有实现类)
Java反射之创建对象
Java反射机制提供了另外一种创建对象方法,Class类提供了一个实例方法newInstance(),通过该方法 可以创建对象,使用起来比较简单,下面两条语句实现了创建字符串String对象。
Java反射之创建对象
|
XML Java 数据库连接
JAVA反射机制与动态代理
JAVA反射机制与动态代理
139 0
|
.NET C# 开发框架
|
Java Spring 安全
JDK动态代理和CGLIB动态代理的区别以及反射
在Spring中的AOP是依靠动态代理来实现切面编程的.而这两者又是有区别的. JDK是基于反射机制,生成一个实现代理接口的匿名类,然后重写方法,实现方法的增强.它生成类的速度很快,但是运行时因为是基于反射,调用后续的类操作会很慢.
5570 0