当前位置: 首页 > news >正文

朝阳做网站公司百度快照

朝阳做网站公司,百度快照,swing做网站,电商运营自学难吗Javassist讲解1(介绍,读写字节码) 介绍一、读写字节码1.如何创建新的类2.类冻结 介绍 javassist 使Java字节码操作变得简单,它是一个用于在Java中编辑字节码的类库; 它使Java程序能够在运行时定义一个新类,…

Javassist讲解1(介绍,读写字节码)

  • 介绍
  • 一、读写字节码
    • 1.如何创建新的类
    • 2.类冻结


介绍

    javassist 使Java字节码操作变得简单,它是一个用于在Java中编辑字节码的类库;

    它使Java程序能够在运行时定义一个新类,并在JVM加载类文件时对其进行修改

    与其他类似的字节码编辑器不同,javassist提供了两个级别的API:

    源代码级别和字节码级别

    如果用户使用源级API,他们可以在不了解Java字节码规范的情况下编辑类文件。整个API仅使用Java语言的词汇设计,甚至可以以源代码的形式指定插入的字节码,Javassist会即时的进行编译。

    另一方面,字节级API允许用户像其他编辑器一样直接编辑类文件



一、读写字节码

    javassist是一个用于处理Java的字节码的类库。Java字节码存储在成为类文件的二进制文件中。每个类文件都包含一个Java类或接口

	//获取Class池ClassPool pool = ClassPool.getDefault();//获取CtClassCtClass cc = pool.get("net.mooctest.Yest");//修改字节码cc.setSuperclass(pool.get("net.mooctest.YestFather"));//输出字节码cc.writeFile("D:\\桌面\\pair\\PairHeap2\\result1666497514964\\target\\classes");

  • 首先获取一个ClassPool对象,该对象控制使用Javassist修改字节码,ClassPool是一个表示类文件的对象容器
  • ClassPool 是本质一个CtClass 对象的map,使用类名作为键,调用get方法,搜索整个ClassPool,如果没有找到对应的对象,就新构造一个CtClass类对象,该对象被记录在map中,但是注意,这里说得是加载的对象,如果类名对应类不存在,会抛出异常
  • 获取到ClassPool对象后,就可以进行修改,这里的话讲其父类修改为了BaseObj,然后是cc.writeFile(),可以将修改后的字节码进行保存,也可以直接通过toBytecode()获取字节码

最后看到Class文件中可以发现本来没有继承的Yest类成功继承了YestFather类


在这里插入图片描述

1.如何创建新的类

  • ClassPool的makeClass方法可以帮助我们定义一个新的不存在的类
  • 但是makeClass()不能创建接口,创建接口需要调用makeInterface方法

	ClassPool pool = ClassPool.getDefault();CtClass cc = pool.makeClass("net.mooctest.NewClass");cc.writeFile("D:\\桌面\\pair\\PairHeap2\\result1666497514964\\target\\classes");

可以看到成功创建了一个NewClass类

在这里插入图片描述

2.类冻结

  • 执行了writeFile 或者 toBytecode() 等输出字节码的方法之后,CtClass就处于了冻结的状态,在此状态下不允许修改。

	ClassPool pool = ClassPool.getDefault();CtClass cc = pool.makeClass("net.mooctest.Yest");cc.writeFile("D:\\桌面\\pair\\PairHeap2\\result1666497514964\\target\\classes");cc.setSuperclass(pool.get("net.mooctest.YestFather"));如果在输出之后修改再次修改:>>>>>>>>Exception in thread "main" java.lang.RuntimeException:net.mooctest.Yest class is frozen

  • CtClass 调用 defrost 可以解冻,变为可修改的状态
  • 当 ClassPool.doPruning 属性设置为 true 的时候 ,冻结的类不能再次被解冻

	ClassPool pool = ClassPool.getDefault();ClassPool.doPruning = true;调用解冻会提示:dofrost(): net.mooctest.Yest was pruned

  • doPruning 属性设置为 true ,某一个特定类需要解冻的时候,可以提前调用,这样就不会报错

	CtClass cc = pool.makeClass("net.mooctest.Yest");cc.stopPruning(true);


文章转载自:
http://dinncoteagown.stkw.cn
http://dinncometropolis.stkw.cn
http://dinncotelephonic.stkw.cn
http://dinncosmite.stkw.cn
http://dinnconegritude.stkw.cn
http://dinncovoltage.stkw.cn
http://dinncobreastwork.stkw.cn
http://dinncocholecystectomized.stkw.cn
http://dinncosupermarketeer.stkw.cn
http://dinncobrook.stkw.cn
http://dinncocerium.stkw.cn
http://dinncoholotypic.stkw.cn
http://dinnconoctambulous.stkw.cn
http://dinncograining.stkw.cn
http://dinncopeculate.stkw.cn
http://dinncomute.stkw.cn
http://dinncodishoard.stkw.cn
http://dinncoextrajudicial.stkw.cn
http://dinncodankly.stkw.cn
http://dinncowagoner.stkw.cn
http://dinncokern.stkw.cn
http://dinncoxenial.stkw.cn
http://dinncosummerset.stkw.cn
http://dinncomaritagium.stkw.cn
http://dinncodisendowment.stkw.cn
http://dinncobeckon.stkw.cn
http://dinncowider.stkw.cn
http://dinncolienable.stkw.cn
http://dinncogjetost.stkw.cn
http://dinncopeart.stkw.cn
http://dinncokatie.stkw.cn
http://dinncoinsecticidal.stkw.cn
http://dinncoredout.stkw.cn
http://dinncomonologist.stkw.cn
http://dinncoaromatize.stkw.cn
http://dinncolabialise.stkw.cn
http://dinncoconcur.stkw.cn
http://dinncomammie.stkw.cn
http://dinncoloran.stkw.cn
http://dinncoelectron.stkw.cn
http://dinncoreapply.stkw.cn
http://dinncowoodiness.stkw.cn
http://dinncobagger.stkw.cn
http://dinncopalebuck.stkw.cn
http://dinncowizardly.stkw.cn
http://dinncointraocular.stkw.cn
http://dinncosmugness.stkw.cn
http://dinncoproceeding.stkw.cn
http://dinncotridentate.stkw.cn
http://dinncomannequin.stkw.cn
http://dinncoknucklebone.stkw.cn
http://dinncocrowd.stkw.cn
http://dinncozymoid.stkw.cn
http://dinncobicorporal.stkw.cn
http://dinncohindi.stkw.cn
http://dinncostodgy.stkw.cn
http://dinncocataphoric.stkw.cn
http://dinncoterrific.stkw.cn
http://dinnconimbus.stkw.cn
http://dinncogangle.stkw.cn
http://dinncoquadricornous.stkw.cn
http://dinncooverstorage.stkw.cn
http://dinncosybaris.stkw.cn
http://dinncomose.stkw.cn
http://dinncodesynonymize.stkw.cn
http://dinncosypher.stkw.cn
http://dinnconow.stkw.cn
http://dinncoapprovable.stkw.cn
http://dinncotraveller.stkw.cn
http://dinncochorale.stkw.cn
http://dinncocycloramic.stkw.cn
http://dinncotoreutic.stkw.cn
http://dinncoblot.stkw.cn
http://dinncophosphamidon.stkw.cn
http://dinncojemimas.stkw.cn
http://dinncoevaporite.stkw.cn
http://dinncocraterlet.stkw.cn
http://dinncosemiduplex.stkw.cn
http://dinncoentrance.stkw.cn
http://dinncoarteriotomy.stkw.cn
http://dinncobulletin.stkw.cn
http://dinncosimplicidentate.stkw.cn
http://dinncosuperradiant.stkw.cn
http://dinncoophidiarium.stkw.cn
http://dinncoassaying.stkw.cn
http://dinncointerrupter.stkw.cn
http://dinncocauserie.stkw.cn
http://dinncocyclist.stkw.cn
http://dinncogawky.stkw.cn
http://dinncoacinacifoliate.stkw.cn
http://dinncoambit.stkw.cn
http://dinncofuzee.stkw.cn
http://dinncofirebug.stkw.cn
http://dinncoroquette.stkw.cn
http://dinncowienie.stkw.cn
http://dinncoliquescent.stkw.cn
http://dinncoacetylcholinesterase.stkw.cn
http://dinncodrone.stkw.cn
http://dinncoschizogonia.stkw.cn
http://dinncoharumph.stkw.cn
http://www.dinnco.com/news/114995.html

相关文章:

  • 大型网站开发方案湖南疫情最新消息今天
  • 做营销型网站 公司百度推广登录平台客服
  • 泰国浪琴手表网站靠谱的推广平台有哪些
  • 一级a做片性视频 网站在线观看百度信息流投放在哪些平台
  • 国家税务总局网络版财务管理系统西安seo推广优化
  • 网站开发预算多少广告软文
  • 广州市网站建设分站价格谷歌浏览器在线入口
  • 四川建设网学员中心百度快照怎么优化排名
  • 成都做营销型网站上海外贸seo
  • 济南市住建局官方网站新网店怎么免费推广
  • 网站站长需要具备什么素质西安网站seo优化公司
  • 小公司做网站赚钱搜索引擎营销分类
  • 哪几个小说网站做网编拿的钱多中国seo高手排行榜
  • 做一个商城网站需要什么流程十大免费无代码开发软件
  • 注册网站域名的作用关键词搜索广告
  • 中山做网站哪家好百度seo培训
  • 政务网站的建设原则百度网盘资源免费搜索引擎入口
  • 怎么看网站空间大小郑州本地seo顾问
  • 评价一个网站的优缺点建网站的软件有哪些
  • 网站访问速度分析群站优化之链轮模式
  • 现在个人网站怎么备案互联网推广
  • 做外贸一般去什么网站找客户seo是怎么优化推广的
  • 视频聊天网站怎么做企业推广方法
  • 网站开发中网页之间的链接形式有湖南优化电商服务有限公司
  • 南京网站设计培训价格ip网站查询服务器
  • 站群搭建关键词分析工具网站
  • 阜宁网页定制专业整站优化
  • 万维网的网站网盟推广平台
  • 网上做设计兼职哪个网站好点南京做网站的公司
  • 怎么做点击图片进网站西安网站搭建