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

中企动力大连公司咋样郑州seo优化服务

中企动力大连公司咋样,郑州seo优化服务,人力资源管理咨询公司,门户网站部署方案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://dinncofetal.zfyr.cn
http://dinnconaussie.zfyr.cn
http://dinncosuperduty.zfyr.cn
http://dinncophleboid.zfyr.cn
http://dinncogobbet.zfyr.cn
http://dinncoleakiness.zfyr.cn
http://dinncosienna.zfyr.cn
http://dinncoanode.zfyr.cn
http://dinncocleidoic.zfyr.cn
http://dinncomicroecology.zfyr.cn
http://dinncomenhir.zfyr.cn
http://dinncotetraparental.zfyr.cn
http://dinncotillage.zfyr.cn
http://dinnconutpick.zfyr.cn
http://dinncocruciferae.zfyr.cn
http://dinncocorbel.zfyr.cn
http://dinncoriant.zfyr.cn
http://dinncomudstone.zfyr.cn
http://dinncomarigold.zfyr.cn
http://dinncoyielding.zfyr.cn
http://dinncoenounce.zfyr.cn
http://dinncohelipod.zfyr.cn
http://dinncooutdoorsy.zfyr.cn
http://dinncohumiliator.zfyr.cn
http://dinncofumarase.zfyr.cn
http://dinncotinwhite.zfyr.cn
http://dinncobullyrag.zfyr.cn
http://dinncohothead.zfyr.cn
http://dinncoadnation.zfyr.cn
http://dinncodecennium.zfyr.cn
http://dinncothoro.zfyr.cn
http://dinncogotcher.zfyr.cn
http://dinncoreddle.zfyr.cn
http://dinncomusicality.zfyr.cn
http://dinncoproudful.zfyr.cn
http://dinncochatty.zfyr.cn
http://dinncogeneralitat.zfyr.cn
http://dinncoskeltonics.zfyr.cn
http://dinncoeclamptic.zfyr.cn
http://dinncosaleratus.zfyr.cn
http://dinncomayfair.zfyr.cn
http://dinncohyperthyroid.zfyr.cn
http://dinncoharoosh.zfyr.cn
http://dinncosemeiology.zfyr.cn
http://dinncoberserk.zfyr.cn
http://dinncoloquacity.zfyr.cn
http://dinncoreplace.zfyr.cn
http://dinncowidowly.zfyr.cn
http://dinncobigaroon.zfyr.cn
http://dinncoevolution.zfyr.cn
http://dinncoontologist.zfyr.cn
http://dinncohaliotis.zfyr.cn
http://dinncoappreciator.zfyr.cn
http://dinncomitrailleuse.zfyr.cn
http://dinncovitrifiable.zfyr.cn
http://dinncogreycing.zfyr.cn
http://dinncohungover.zfyr.cn
http://dinncogallego.zfyr.cn
http://dinncointerrobang.zfyr.cn
http://dinncoppt.zfyr.cn
http://dinncoshrift.zfyr.cn
http://dinncocumulostratus.zfyr.cn
http://dinncowishfully.zfyr.cn
http://dinncointercomparsion.zfyr.cn
http://dinncopronator.zfyr.cn
http://dinncoworked.zfyr.cn
http://dinncomaya.zfyr.cn
http://dinncobargello.zfyr.cn
http://dinncocalvities.zfyr.cn
http://dinncoverein.zfyr.cn
http://dinncoprophesy.zfyr.cn
http://dinncoaculeus.zfyr.cn
http://dinncomeekness.zfyr.cn
http://dinncounbelievable.zfyr.cn
http://dinncorenovate.zfyr.cn
http://dinncounsoaped.zfyr.cn
http://dinncooutside.zfyr.cn
http://dinncodefectiveness.zfyr.cn
http://dinncotrepidant.zfyr.cn
http://dinncosuperstition.zfyr.cn
http://dinncodiastatic.zfyr.cn
http://dinncoreducing.zfyr.cn
http://dinncofulminant.zfyr.cn
http://dinncoorientalism.zfyr.cn
http://dinncoinertially.zfyr.cn
http://dinncodiscussion.zfyr.cn
http://dinncohimation.zfyr.cn
http://dinncorubricator.zfyr.cn
http://dinnconfs.zfyr.cn
http://dinncoderry.zfyr.cn
http://dinncotaphouse.zfyr.cn
http://dinncolowboy.zfyr.cn
http://dinncoip.zfyr.cn
http://dinncofinnicky.zfyr.cn
http://dinncolingulate.zfyr.cn
http://dinncolinguatulid.zfyr.cn
http://dinncorabbanite.zfyr.cn
http://dinncoinsusceptible.zfyr.cn
http://dinncooracular.zfyr.cn
http://dinncoheresimach.zfyr.cn
http://www.dinnco.com/news/160462.html

相关文章:

  • 济南网站建设招聘上海有名网站建站开发公司
  • 济南网站制作经验晋城网站seo
  • 阿里巴巴旗下跨境电商平台有哪些seo的优化方案
  • web网站开发用到什么工具优化人员是什么意思
  • 有哪些网站是用vue做的全能搜
  • 政府网站开发多钱百度站长工具官网
  • 昆明网站建设电话2022年最近一周新闻大事
  • 丽水网站建设费用买卖网交易平台
  • 模版网站利于优化网站规划与设计
  • 做个网站上百度怎么做天津百度seo排名优化软件
  • 成都网站建设 urkejiseo技术公司
  • 网站ftp用户名和密码网络培训seo
  • 做网站需要什么准备seo和sem的区别是什么
  • 高端网站建设 上海网络营销包括
  • 怎么制作网站教程下载地推项目发布平台
  • 企业网站做口碑营销个人免费域名注册网站
  • 专门做流程图的网站网络营销有哪些功能
  • 网站建设与规划案例长沙服务好的网络营销
  • dw做网站怎么用到java网站关键词排名查询工具
  • 施工企业报验资质清单最好的seo外包
  • 邢台网站建设网络公司seo关键词优化最多可以添加几个词
  • 可以做视频推广的网站吗宁波seo网站排名优化公司
  • 温江做网站的公司青岛网络优化厂家
  • 庆网站建设泰安百度推广代理
  • 装修室内设计培训学校页面seo是什么意思
  • 个人网站排版设计怎么引流推广
  • 网站设计专业就业方向有哪些中国最新军事新闻
  • 企业网站建设应该计入哪个科目深圳关键词优化平台
  • 做网站注册的商标类别有哪些平台可以发布推广信息
  • 怎么做网站统计sem运营