javaparser - 如何使用 JavaParser 向解析文件添加新方法?
问题描述
我已经解析了一个 java 文件并得到了编译单元
cu = JavaParser.parse(in);
java文件中的编译
单元
如何使用 this 添加一些新方法cu
?
我只想在我的原始类中添加新方法。
解决方案
这是一个关于如何创建方法并将其添加到编译单元的示例:
// create the type declaration
ClassOrInterfaceDeclaration type = cu.addClass("GeneratedClass");
// create a method
EnumSet<Modifier> modifiers = EnumSet.of(Modifier.PUBLIC);
MethodDeclaration method = new MethodDeclaration(modifiers, new VoidType(), "main");
modifiers.add(Modifier.STATIC);
method.setModifiers(modifiers);
type.addMember(method);
// or a shortcut
MethodDeclaration main2 = type.addMethod("main2", Modifier.PUBLIC, Modifier.STATIC);
// add a parameter to the method
Parameter param = new Parameter(new ClassOrInterfaceType("String"), "args");
param.setVarArgs(true);
method.addParameter(param);
// or a shortcut
main2.addAndGetParameter(String.class, "args").setVarArgs(true);
// add a body to the method
BlockStmt block = new BlockStmt();
method.setBody(block);
// add a statement do the method body
NameExpr clazz = new NameExpr("System");
FieldAccessExpr field = new FieldAccessExpr(clazz, "out");
MethodCallExpr call = new MethodCallExpr(field, "println");
call.addArgument(new StringLiteralExpr("Hello World!"));
block.addStatement(call);
推荐阅读
- javascript - 悬停其他 div JavaScript CSS 时的图像遮罩和过渡
- c++ - 如何在自定义类中调用“SetDlgItemText”?
- modbus - 用于测试的设备模拟器
- android - NestedCoordinatorLayout 内的 NestedScrollView 有时会卡住
- android - json 信息到主布局中包含的 NavigationView 布局中?
- mysql - 4 表连接并求一列的平均值
- xml - Base64 解码并解压缩为字符串 (Java 7)
- django - 处理 Django 用户订阅到期日期
- view - 在 CKAN 2.7.2 中运行 fiware-ngsi 插件需要哪个 ckan 视图?
- azure - Azure Application Insights 基于百分比的警报