前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >android JavaPoet记录

android JavaPoet记录

原创
作者头像
木子杂志
修改2020-08-10 10:51:46
7630
修改2020-08-10 10:51:46
举报
文章被收录于专栏:木子杂志木子杂志
官网

https://github.com/square/javapoet

使用: 本次使用的是

代码语言:javascript
复制
implementation 'com.squareup:javapoet:1.8.0'
Javapoet 主要是配合 APT 工具使用 在编译期间 生成 java 代码.
栗子

​目标代码:

代码语言:javascript
复制
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 书写:

代码语言:javascript
复制
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);
  }
}

控制台输出代码:

代码语言:javascript
复制
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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 官网
    • Javapoet 主要是配合 APT 工具使用 在编译期间 生成 java 代码.
      • 栗子
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档