做网站网络合同石河子网站制作
news/
2025/10/5 23:11:16/
文章来源:
做网站网络合同,石河子网站制作,企业人员信息管理系统,云服务器做网站详细问题如下;Java代码中的方法是#xff1a;Rule foo(){return sequence(foo(), x());}这将引发解析循环,当然应该避免;但是,这是合法的#xff1a;Rule foo(){return sequence(x(), foo());}现在,代码中的其他地方我可以访问RuleMethod,这是一个扩展MethodNode的类,因此我可以访…问题如下;Java代码中的方法是Rule foo(){return sequence(foo(), x());}这将引发解析循环,当然应该避免;但是,这是合法的Rule foo(){return sequence(x(), foo());}现在,代码中的其他地方我可以访问RuleMethod,这是一个扩展MethodNode的类,因此我可以访问以下信息 ruleMethod.name:foo; (在MethodNode中定义) ruleMethod.desc :()Lorg / parboiled / Rule; (在MethodNode中定义) ruleMethod.ownerClasscom.github.fge.grappa.experiments.SelfReferringRule.MyParser(在RuleMethod中定义)上面第一个代码提取的字节码如下Method foo:0 L01 ALOAD 02 ALOAD 03 INVOKEVIRTUAL com/github/fge/grappa/experiments/SelfReferringRule$MyParser.foo ()Lorg/parboiled/Rule;4 ALOAD 05 INVOKEVIRTUAL com/github/fge/grappa/experiments/SelfReferringRule$MyParser.x ()Lorg/parboiled/Rule;6 ICONST_07 ANEWARRAY java/lang/Object8 INVOKEVIRTUAL com/github/fge/grappa/experiments/SelfReferringRule$MyParser.sequence (Ljava/lang/Object;Ljava/lang/Object;[Ljava/lang/Object;)Lorg/parboiled/Rule;9 ARETURN10 L1这意味着我可以获得的每一个信息都能够发现,至少在上面的字节码中,foo()是sequence()调用的第一个参数,因为构造函数接受三个参数并且有三个元素在堆栈上.但当然我不能在运行时“眼睛检查”.因此我需要一种方法来做到这一点……看起来我需要的是一个MethodVisitor和一些visitInsn(),然后看看有什么参数并正确检测……但我没有任何想法从哪里开始;在网上搜索似乎只是举例说明如何修改字节码,而不是检测这种情况/我从哪里开始
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/928828.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!