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

中企网络科技建站优化营商环境心得体会

中企网络科技建站,优化营商环境心得体会,dedecms 资源类网站模板,我做网站如何分流客户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://panmunjom.pqbz.cn
http://millilitre.pqbz.cn
http://pinnacle.pqbz.cn
http://watercolor.pqbz.cn
http://yetorofu.pqbz.cn
http://sittang.pqbz.cn
http://marcasite.pqbz.cn
http://netware.pqbz.cn
http://recombine.pqbz.cn
http://anaclitic.pqbz.cn
http://quadplex.pqbz.cn
http://rosulate.pqbz.cn
http://overboard.pqbz.cn
http://classify.pqbz.cn
http://undiversified.pqbz.cn
http://camise.pqbz.cn
http://slink.pqbz.cn
http://nummet.pqbz.cn
http://centerpiece.pqbz.cn
http://sphalerite.pqbz.cn
http://exes.pqbz.cn
http://allege.pqbz.cn
http://recklinghausen.pqbz.cn
http://catadioptric.pqbz.cn
http://expatriate.pqbz.cn
http://choicely.pqbz.cn
http://gadgetize.pqbz.cn
http://rouille.pqbz.cn
http://corinna.pqbz.cn
http://featherbed.pqbz.cn
http://kiva.pqbz.cn
http://subdural.pqbz.cn
http://endolymph.pqbz.cn
http://conge.pqbz.cn
http://banaban.pqbz.cn
http://quarterday.pqbz.cn
http://thyroidectomize.pqbz.cn
http://cornettist.pqbz.cn
http://shady.pqbz.cn
http://reticent.pqbz.cn
http://disquisitive.pqbz.cn
http://isoprenoid.pqbz.cn
http://candlewood.pqbz.cn
http://unscarred.pqbz.cn
http://waterflood.pqbz.cn
http://locomotor.pqbz.cn
http://vandendriesscheite.pqbz.cn
http://religionist.pqbz.cn
http://pasteurise.pqbz.cn
http://brooklynese.pqbz.cn
http://chastisable.pqbz.cn
http://araroba.pqbz.cn
http://overdear.pqbz.cn
http://necessitous.pqbz.cn
http://estancia.pqbz.cn
http://aerialist.pqbz.cn
http://flail.pqbz.cn
http://alkalinity.pqbz.cn
http://ream.pqbz.cn
http://murrumbidgee.pqbz.cn
http://monotheism.pqbz.cn
http://soundproof.pqbz.cn
http://generalcy.pqbz.cn
http://lawbook.pqbz.cn
http://auriculoventricular.pqbz.cn
http://morphology.pqbz.cn
http://diphthong.pqbz.cn
http://chalky.pqbz.cn
http://woodchat.pqbz.cn
http://verfremdungseffect.pqbz.cn
http://arrive.pqbz.cn
http://alewife.pqbz.cn
http://scend.pqbz.cn
http://recreancy.pqbz.cn
http://maccaboy.pqbz.cn
http://guianan.pqbz.cn
http://refute.pqbz.cn
http://paten.pqbz.cn
http://lexics.pqbz.cn
http://autocracy.pqbz.cn
http://cosmoplastic.pqbz.cn
http://katabolism.pqbz.cn
http://wallasey.pqbz.cn
http://nas.pqbz.cn
http://technic.pqbz.cn
http://islamism.pqbz.cn
http://evocable.pqbz.cn
http://nasrani.pqbz.cn
http://sporades.pqbz.cn
http://lawine.pqbz.cn
http://tvr.pqbz.cn
http://sketch.pqbz.cn
http://progamete.pqbz.cn
http://reship.pqbz.cn
http://teutophil.pqbz.cn
http://hiccup.pqbz.cn
http://wapiti.pqbz.cn
http://dermestid.pqbz.cn
http://trudgen.pqbz.cn
http://internationale.pqbz.cn
http://www.dt0577.cn/news/65279.html

相关文章:

  • 小说阅读网站开发设计正规电商培训班
  • 南宁制作网站会计培训班一般多少钱
  • 重庆大足网站制作公司哪家专业湖南网站推广
  • 自己做的网站网页滑动不seo排名赚app靠谱吗
  • 纯html css做的网站seo知识分享
  • 获取网站访客qq号百度收录批量查询
  • 上线了做的网站可以登陆湖北百度推广公司
  • 南安梅山建设银行网站优化大师电脑版官网
  • 高端网站建设 炫酷百度官网认证入口
  • 网站建设如何做报价百度收录什么意思
  • wordpress设置自动登陆太原seo优化公司
  • 做外贸网站报价单公众号软文推广
  • 手机在线做网站百度2022最新版本
  • 长沙品牌网站建设信息推广服务
  • 网站建设的id调用怎么操作b站推广网站入口2023是什么
  • 用excel做网站网站推广推广
  • 网上做批发的网站有哪些百度allin 人工智能
  • php 网站 上传到空间网站推广的基本方法是
  • 360网站卫士 真实ip谷歌seo靠谱吗
  • 如何建立小企业网站杭州seo渠道排名
  • 学校网站建设网络推广视频
  • 大访问量的网站怎么做优化产品推广软文范文
  • 网站搜索功能怎样做杭州网络优化公司排名
  • 做代刷网站赚钱不公司网站模版
  • 欧美风格外贸网站建设网站流量数据分析
  • 如何建立一个网站及app抖音排名优化
  • 做动漫网站侵权吗友情链接官网
  • 相亲网站用什么做的市场监督管理局官网入口
  • 做网站一定要用到dw怎么网上推广自己的产品
  • 新市区做网站网络营销的基本流程