首页 > 其他分享 >JDK动态代理

JDK动态代理

时间:2023-12-20 18:06:28浏览次数:19  
标签:args String JDK Object 代理 result 动态 public HelloService

接口类:

public interface HelloService {
    String sayHello(String name);
}

实现类:

public class HelloServiceImpl implements HelloService{

    @Override
    public String sayHello(String name) {
        return "你好," + name;
    }
}

客户端client:

public static void main(String[] args) {
        HelloService helloService = new HelloServiceImpl();
        HelloService aa = (HelloService) Proxy.newProxyInstance(HelloServiceImpl.class.getClassLoader(), HelloServiceImpl.class.getInterfaces(), new InvocationHandler() {
            /**
             * Object proxy:被代理对象的引用,系统会自动创建被代理对象的一个映射
             * Method method:被代理对象的方法
             * @param args
             * Object[] args:被代理对象方法的参数
             * 返回值是被代理对象执行后的返回值
             */
            @Override
            public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                //被代理对象方法的执行,并获得返回值
                Object result = method.invoke(helloService, args);
                return result;
            }
        });
        String result = aa.sayHello("ss");
        System.out.println("result:" + result);
    }

标签:args,String,JDK,Object,代理,result,动态,public,HelloService
From: https://blog.51cto.com/u_11315052/8909338

相关文章

  • JDK动态代理
    接口类:publicinterfaceHelloService{StringsayHello(Stringname);}实现类:publicclassHelloServiceImplimplementsHelloService{@OverridepublicStringsayHello(Stringname){return"你好,"+name;}}代理工具类:importjava.lang.......
  • vue项目多axios实例动态创建
    //通用请求拦截器importaxiosfrom"axios";importQsfrom"qs";importstorefrom"@/store";importrouterfrom"@/router";import{Loading,Message}from"element-ui";//引用element-ui的加载和消息提示组件letloading......
  • 设计模式—代理模式
    介绍代码接口创建接口ImagepublicinterfaceImage{voiddisplay();}实体类创建实体类RealImagepublicclassRealImageimplementsImage{privateStringfileName;publicRealImage(StringfileName){this.fileName=fileName;......
  • 深度解析ArrayList:灵活高效的动态数组实现
    在Java集合框架中,ArrayList是一个常用而强大的类,它提供了动态数组的实现,允许在运行时动态调整数组的大小。ArrayList是List接口的实现类,基于动态数组的数据结构。它可以存储任意类型的对象,并提供了丰富的方法,包括添加、删除、遍历等,使其在各种场景下都能发挥重要作用。底层......
  • C++ Qt开发:QItemDelegate 自定义代理组件
    Qt是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍QStyledItemDelegate自定义代理组件的常用方法及灵活运用。在Qt中,QStyledItemDelegate类是用于......
  • Python中强大的动态类型特性,以方法调用为例
    在研究大佬的项目时,从一行行代码溯源,拨茧抽丝的过程中,发现了方法调用的“神奇之处”具体情况如下:1.在类Trainer中名为run等方法中有加载预训练好的模型的load方法2.load()方法依旧是类方法中的一个,在load方法中有具体的load_self()方法3. load_self()定义在另一个py文件mod......
  • 动态短效代理ip为什么限制ip提取和并发?
    动态短效代理IP之所以会限制提取和并发连接的原因主要是为了防止滥用、维护服务的质量和可靠性。下面是一些可能的原因:      1,防止滥用: 提供短效HTTP代理IP的服务可能会实施提取和并发限制,以防止滥用其资源。如果没有限制,用户可能会大规模地抓取代理IP,导致服务不稳定,甚至......
  • 代理模式理解
    代理模式其实称为网关模式就很好理解,即代理就是那个网关,它只是会额外的做一些操作(比如日志记录,拦截等),然后原封不动的将参赛调用被代理对象,然后再将被代理对象(各方法)执行后拿到的结果返回给调用放;即中间多了一个代理层(网关);网关需要配置被代理服务的地址,同样的代理对象需要配置被......
  • JDK动态代理如何实现
    通过字节重组,重新生成对象来代替原始对象,以达到代理的目的。字节码重组的基本步骤如下:1.获取被代理对象的引用,利用反射获取到它的所有接口。2.JDK动态代理类Proxy重新生成一个新的类,此类要实现刚才获取到的所有接口。3.动态生成新类的Java代码。4.编译.java文件成.class文件。5.加......
  • nginx反向代理jumpserver
    背景之前的文章介绍了,如何使用docker部署jumpserver当需要配置成https的时候,会发现很不好调整那么就出现了一种新的场景,那就是,后端服务不能动,如何在原来的基础上实现https的方式访问思路通过nginx反向代理给后端实现jumpserver的web服务地址是10.0.0.12:8888生成证书这......