android JavaPoet记录
时间:2022-07-22
本文章向大家介绍android JavaPoet记录,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
官网
https://github.com/square/javapoet
使用: 本次使用的是
implementation 'com.squareup:javapoet:1.8.0'
Javapoet 主要是配合 APT 工具使用 在编译期间 生成 java 代码.
栗子
目标代码:
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);
}
}
符合预期,小栗子完成.
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 查找被删除但仍然占据磁盘的文件
- WPF 获取本机所有字体拿到每个字符的宽度和高度
- WPF 自己封装 Skia 差量绘制控件
- C# dotnet 使用 OpenXml 解析 Word 文件
- Day20:包含min函数的栈
- No module named ‘SerialClient‘和Cannot import package : rosserial_arduino
- 提升开发效率N倍的20+命令行神器!(附 demo)
- Java反射原理
- 【每日一题】46. Permutations
- 免费下论文的10个方法
- 【原创】90%的人都不会做的一道笔试题
- 这10道 Spring 常见面试题,你能搞定吗?
- 网工小白升级打怪篇(二)telnet实现远程管理
- (32)条件判断
- (33)if、case语句