https://github.com/square/javapoet
使用: 本次使用的是
implementation 'com.squareup:javapoet:1.8.0'
目标代码:
package com.ben.poet;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
poet 书写:
public class PoetTest {
public static void main(String[] strings) throws IOException {
testMainActivity();
}
private static void testMainActivity() throws IOException {
//创建方法
MethodSpec onCreate = MethodSpec.methodBuilder("onCreate")
//添加Override
.addAnnotation(Override.class)
//修饰符
.addModifiers(Modifier.PROTECTED)
//方法返回值
.returns(void.class)
//根据字符串的类名-->对应的class type
.addParameter(TypeVariableName.get("android.os.Bundle"), "savedInstanceState")
//方法{}的代码
.addStatement("super.onCreate(savedInstanceState)")
.addStatement("setContentView(R.layout.activity_main)")
.build();
//TypeSpec 创建 class 或者 interface
TypeSpec mainActivity = TypeSpec.classBuilder("MainActivity")
//继承的父类
.superclass(TypeVariableName.get("android.support.v7.app.AppCompatActivity"))
//修饰符
.addModifiers(Modifier.PUBLIC, Modifier.FINAL)
// class 添加方法
.addMethod(onCreate)
.build();
JavaFile javaFile = JavaFile.builder(" package com.ben.poet", mainActivity)
.build();
javaFile.writeTo(System.out);
}
}
控制台输出代码:
package package com.ben.poet;
import java.lang.Override;
public final class MainActivity extends android.support.v7.app.AppCompatActivity {
@Override
protected void onCreate(android.os.Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
符合预期,小栗子完成.
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。