然而,接下来的操作,会让你耳目一新。起首我们新建几个测试类,假如我们新建了如许4个测试类:ActivityA,ActivityB,ActivityC,ActivityD,并且都给他们加上注解@Test。然后rebuild一下,你会发明,我们的TestClass变了样:
- public class TestClass {
- public static void main(String[] args){
- System.out.println("Hallo world!");
- }
- }
4.操作注解处理类,生成目标java文件
- @AutoService(Processor.class)
- @SupportedAnnotationTypes({
- "com.aop.anno.Test"
- })
- public class TestProcessor extends AbstractProcessor{
- @Override
- public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
- //生成TestClass类
- TypeSpec.Builder tb = TypeSpec.classBuilder("TestClass")
- .addModifiers(Modifier.PUBLIC);
- //生成main办法
- MethodSpec.Builder mb = MethodSpec.methodBuilder("main")
- .addModifiers(Modifier.PUBLIC, Modifier.STATIC)
- .returns(void.class)
- .addParameter(String[].class, "args");
- //生成代码块,并添加到main办法中
- for(TypeElement e : ElementFilter.typesIn(roundEnv.getElementsAnnotatedWith(Test.class))){
- CodeBlock cb = CodeBlock.builder()
- .addStatement("$T.out.println(\"$L + $L\")", System.class,
- e.getAnnotation(Test.class).value(), e.getSimpleName())
- .build();
- mb.addCode(cb);
- }
推荐阅读
Java关键字volatile的理解与正确使用 | 干货分享
其实面对膳绫擎的反例场景可以应用JDK1.5 java.util.concurrent.atomic中供给的原子包装类型来包管原子性操作 概述1、不合适应用volatile的场景(非原子性操作)Java说话中关键字 volatile 被>>>详细阅读
本文标题:Android Studio中使用apt
地址:http://www.17bianji.com/lsqh/35628.html
1/2 1