美文网首页
为什么JDK动态代理中要求目标类实现的接口数量不能超过65535

为什么JDK动态代理中要求目标类实现的接口数量不能超过65535

作者: 奔跑的小虾米 | 来源:发表于2019-12-16 20:59 被阅读0次

先明确几个概念:
Class文件是一组以8字节为基础单位的二进制流
各个数据项目严格按照顺序紧凑排列在class文件中
中间没有任何分隔符,这使得class文件中存储的内容几乎是全部程序运行的程序
Java虚拟机规范规定,Class文件格式采用类似C语言结构体的伪结构来存储数据,这种结构只有两种数据类型:无符号数和表
接口索引计数器(interfaces_count),占2字节

参考第一句话:class文件是一组8字节为基础的二进制流,interface_count占2字节。也就是16.00000000,00000000 所以,证明
interface_count的数量最多是2^16次方 最大值=65535
这是在JVM的层面上决定了它的数量最多是65535
且在java源码中也可以看到

if (var2.size() > 65535) {
throw new IllegalArgumentException("interface limit exceeded: " + var2.size());

直接做了65535的长度的校验,所以,JDK的动态代理要求,目标类实现的接口数量不能超过65535

原文链接:https://blog.csdn.net/weixin_44402359/article/details/95447277
如有错误,请评论或者私聊我,欢迎探讨技术问题

相关文章

  • 为什么JDK动态代理中要求目标类实现的接口数量不能超过65535

    先明确几个概念:Class文件是一组以8字节为基础单位的二进制流各个数据项目严格按照顺序紧凑排列在class文件中...

  • JDK动态代理和CGLIB动态代理

    如果目标类实现接口,采用JDK动态代理;如果目标类没有实现接口,采用CGLIB动态代理 一.JDK动态代理 总结1...

  • Java代理(jdk静态代理、动态代理和cglib动态代理)

    jdk静态代理 jdk动态代理 jdk动态代理的业务类必须实现接口 业务类的实现类 代理类的生成 cglib动态代...

  • spring aop

    JDK动态代理和CGLib代理 JDK的代理代理类 被代理接口 被代理实现类 启动类: jdk的动态代理是针对接口...

  • 动态代理

    jdk的动态代理: 注意jdk的动态代理要求被代理的类必须实现了接口,我们先定义被代理的主类MyServer: 首...

  • Java中3种代理总结

    1、JDK静态代理 业务接口 接口的实现类 代理类,实现接口,并扩展实现类的功能 2、JDK动态代理 业务接口 实...

  • Java动态代理--JDK实现

    java动态代理JDK实现 步骤 定义接口 目标类(实现上面的接口) 实际处理类 实现InvocationHand...

  • 0x09.动态代理和Spring AOP原理简介

    [TOC] 动态代理 JDK的动态代理是通过实现目标类的接口来创建代理类,借助里式替换原则通过聚合目标类,在接口方...

  • JDK动态代理

    今天呢。我们来学习意向JDK的动态代理也可以使用JDK的API实现动态代理。这种方式要求目标类有一个接口。这种方式...

  • spring-aop认识

    基础前瞻两种动态代理对比: 1.JDK 动态代理:基于接口,只能为接口创建实现动态代理,通过调用目标类实现。 2....

网友评论

      本文标题:为什么JDK动态代理中要求目标类实现的接口数量不能超过65535

      本文链接:https://www.haomeiwen.com/subject/vkfjnctx.html