retransformclasses

void retransformclasses(class... classes)
throws unmodifiableclassexception
转换提供的类集。

  此函数检测已加载提供了方便。 当最初加载了类或重定义了类时,初始类文件字节可以使用 classfiletransformer 转换。 此函数返回转换进程(以前是否发生过转换)。 此转换按以下步骤进行:

  从初始类文件字节开始

  对于每个添加时 canretransform 设为 false 的转换器,上一次类加载或重定义期间 transform返回的字节将被重新用于转换的输出;注意,这等价于不做更改地重新应用一个转换;没有调用 transform 的情况除外。

  对于每个添加时 canretransform 设为 true 的转换器,在这些转换器中调用 transform方法

  转换的类文件字节将作为类的新定义安装

  转换的顺序在 transform 方法中描述。在自动重新应用不可重转换的转换时,也将使用这一顺序。

  最初的类文件字节表示(应用转换前)传递给 classloader.defineclass 或 redefineclasses 的字节,但有可能不完全匹配常量池的布局内容可能不同。常量池的条目可能多一些或少一些。常量池条目的顺序可能不同,但是,方法字节码中常量池的索引将是对应的。一些属性可能不存在。在顺序没有意义的地方(例如,方法的顺序),可能不保留顺序。

  此方法在一个集合上操作,以便允许同时对多个类进行相互依赖的更改(重转换类 a 要求重转换类 b)。

  如果重转换的方法有活动的堆栈帧,那么这些活动的帧将继续运行原方法的字节码。重转换的方法将用于新的调用。

  此方法不会引起任何初始化操作,jvm 惯例语义下发生的初始化除外。换句话说,重定义一个类不会引起其初始化方法的运行。静态变量的值将与调用之前的值一样。

重转换类的实例不受影响。

  重转换可能会更改方法体、常量池和属性。重转换不得添加、移除、重命名字段或方法;不得更改方法签名、继承关系。在以后的版本中,可能会取消这些限制。在应用转换之前,类文件字节不会被检查、验证和安装。如果结果字节错误,此方法将抛出异常

如果此方法抛出异常,则不会重转换任何类。

此方法旨在用于检测,正如类规范所述。

参数
classes - 要转换的类数组; 允许长度为 0 数组,在这种情况下,此方法不执行任何操作
抛出:
unmodifiableclassexception - 如果不能修改指定的类(ismodifiableclass(java.lang.class>) 返回 false
unsupportedoperationexception - 如果 jvm 的当前配置不允许重转换(isretransformclassessupported() 为 false),或者重转换试图做出不受支持的更改
classformaterror - 如果数据不包含有效的类
noclassdeffounderror - 如果类文件中的名称不等于类的名称
unsupportedclassversionerror - 如果类文件版本号不受支持
classcircularityerror - 如果新类包含循环
linkageerror - 如果发生链接错误
nullpointerexception - 如果提供的类数组或其任意组件为 null
从以下版本开始:
1.6
另请参见:
isretransformclassessupported(),addtransformer(java.lang.instrument.classfiletransformer, boolean),classfiletransformer

最新文章

  1. [No000020]背单词提不起兴趣怎么办?
  2. EmgnCv进行轮廓寻找和计算物体凸包
  3. 自动化(Automation)兼容的数据类型
  4. 1016. Phone Bills (25)
  5. baseDao 使用spring3+hibernate3方式
  6. 基于Spring Boot,使用JPA动态调用Sql查询数据
  7. sql优化基础篇
  8. Docker: How to enable/disable HTTP Proxy in Toolbox
  9. AI书单
  10. JDBC的简单笔记
  11. 2017-12-14python全栈9期第一天第二节之初始计算机系统
  12. Adobe Premiere Pro生成峰值文件假死
  13. 《Linux内核分析》第八周学习小结 进程的切换和系统的一般执行过程
  14. quick-cocos2d-x 游戏开发之一】开发工具sublime text及其强力插件QuickXDev
  15. python 流程控制(for循环语句)
  16. pandas numpy处理缺失值,none与nan比较
  17. IntelliJ IDEA 2017版 spring-boot使用Spring Data JPA搭建基础版的三层架构
  18. 炸弹人NABCD分析
  19. 笔记本设置wifi热点并抓包
  20. lamp环境应用实践

热门文章

  1. 作业:for循环,迭代法和穷举法
  2. 微信小程序开发-易源API的调用
  3. JDBC原理之层次结构
  4. volatile与Synchronized
  5. C 语言高效编程与代码优化
  6. 饿了么vue实现学习笔记
  7. 吴裕雄--天生自然 R语言开发学习:基本图形
  8. [BZOJ 3144][HNOI 2013] 切糕
  9. 吴裕雄--天生自然KITTEN编程:移动与旋转
  10. 创业的游戏 明星APP上市前后的冰火两重天