我是ASM框架的新手.我已经在这个ASM框架上工作了一个星期.我在网上看过关于解析类和从头开始生成.class文件的教程.但我无法遵循如何修改ASM中的现有类.
请帮助我.
我无法遵循ClassVisitor,ClassWriter和ClassReader之间的执行流程.
请通过为我提供以下代码的ASM示例来解决我的问题.
public class ClassName {
public void showOne()
{
System.out.println("Show One Method");
}
public static void main(String[] args) {
ClassName c=new ClassName();
c.showOne();
}
}
Run Code Online (Sandbox Code Playgroud)
上述类应修改为:
public class ClassName {
public void showOne()
{
System.out.println("Show One Method");
}
public void showTwo()
{
System.out.println("Show Two Method");
}
public static void main(String[] args) {
ClassName c=new ClassName();
c.showOne();
c.showTwo();
}
}
Run Code Online (Sandbox Code Playgroud)
什么应该是ASM代码来修改它?
我使用ASMifier工具生成代码.但我不知道在哪里应用它.
请帮我.+
我是ANTLR框架的新手。我已经为此工作了一个星期。现在我需要解析Java文件并提取数据。我正在使用ANTLR 4进行解析。我使用内置工具中的ANTLR创建Lexer,Parser和Visitor文件。当我尝试使用Visitor方法时,不会被调用并返回null值。
这是编码。
我产生了 JavaLexer, JavaParser, JavaVisitor, JavaBaseVisitor, JavaListener
package com.antlr;
import org.antlr.v4.runtime.*;
import org.antlr.v4.runtime.tree.*;
import java.io.FileInputStream;
import java.io.InputStream;
public class ExtractInterfaceVisitor {
public static class AnnVisitor extends JavaBaseVisitor<String> {
@Override
public String visitAnnotation (JavaParser.AnnotationContext ctx)
{
System.out.println("Annotation");
return ctx.getText();
}
@Override
public String visitClassDeclaration( JavaParser.ClassDeclarationContext ctx)
{
System.out.println("Class Declaration");
return ctx.getText();
}
}
public static void main(String[] args) throws Exception {
String inputFile = null;
inputFile = "C:/Users/User/Desktop/antlr/java1/Demo.java"; //Contains a Java File
InputStream is = System.in;
is …Run Code Online (Sandbox Code Playgroud)