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

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

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("小米");
    }
}

相关文章
|
3月前
|
Java
java反射
java反射
35 3
|
7月前
|
Java API 开发者
解密Java反射机制与动态代理
解密Java反射机制与动态代理
51 0
反射的应用:动态代理
反射的应用:动态代理
52 0
|
7月前
|
安全 Java
java反射篇
java反射篇
|
设计模式 Java 程序员
静态代理和动态代理区别(是否有实现类)
静态代理和动态代理区别(是否有实现类)
373 0
静态代理和动态代理区别(是否有实现类)
|
Java API
Java反射必知必会
反射是Java的重要知识,本文分享Java反射的核心知识。
193 0
Java反射必知必会
|
XML Java 数据格式
Java反射介绍
Java的反射(reflection)机制是在**运行**状态中,对于任意一个类,都能够知道这个类的**所有属性和方法**;对于任意一个对象,都能够调用它的任意方法和属性,既然能拿到那么,我们就可以修改部分类型信息;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射(reflection)机制。
312 0
|
Java API
Java反射1
Java反射1
100 0
Java反射1
|
Java
Java反射(五)
反射获取信息
68 0
Java反射之创建对象
Java反射机制提供了另外一种创建对象方法,Class类提供了一个实例方法newInstance(),通过该方法 可以创建对象,使用起来比较简单,下面两条语句实现了创建字符串String对象。
Java反射之创建对象