java annotation processing 自动生成代码

原创 2014年11月08日 16:49:29
package example;

import java.io.*;
import javax.tools.*;
import java.util.*;
import javax.annotation.processing.*;
import javax.lang.model.*;
import javax.lang.model.element.*;

@SupportedAnnotationTypes(value = { "*" })
@SupportedSourceVersion(SourceVersion.RELEASE_6)
public class ExampleProcessor extends AbstractProcessor {

	private Filer filer;

	public void init(ProcessingEnvironment env) {
		filer = env.getFiler();
	}

	public boolean process(Set elements, RoundEnvironment env) {
		// Discover anything marked with @SuppressWarnings
		for (Element element : env
				.getElementsAnnotatedWith(SuppressWarnings.class)) {
			if (element.getKind() == ElementKind.METHOD) {
				// For any methods we find, create an aspect:
				String methodName = element.getSimpleName().toString();
				String aspectText = "public aspect Advise_" + methodName
						+ " {\n" + "  before(): execution(* " + methodName
						+ "(..)) {\n" + "    System.out.println(\""
						+ methodName + " running\");\n" + "  }\n" + "}\n";
				try {
					JavaFileObject file = filer.createSourceFile("Advise_"
							+ methodName, element);
					file.openWriter().append(aspectText).close();
					System.out.println("Generated aspect to advise "
							+ methodName);
				} catch (IOException ioe) {
				}
			}
		}
		return true;
	}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Java注解-注解处理器(编译期|RetentionPolicy.SOURCE)

简单介绍编译注解如何工作。
  • N_ou25
  • N_ou25
  • 2016-01-19 13:41
  • 1547

【Annotation】Processing-Tool详解

在这篇文章中我将阐述如何实现一个注解处理器。首先我将向你解释什么是注解处理器,你可以使用这个强大的工具来做什么及不能做什么。接下来我们将一步一步来实现一个简单的注解处理器。 1. 一些基本概念 ...
  • hj7jay
  • hj7jay
  • 2016-08-11 10:09
  • 2502

Java注解(3)-注解处理器(编译期|RetentionPolicy.SOURCE)

转载地址:http://blog.zenfery.cc/archives/78.html 注解的处理除了可以在运行时通过反射机制处理外,还可以在编译期进行处理。在编译期处理注解时,会处理到不再产...

浅析ButterKnife的实现 (四) —— OnClick

讲完了View注解,下面来介绍怎么给View设置点击监听。 @OnClick 定义个用来设置点击监听的注解:

一个辅助开发的UI布局,包括拖拽、滚动、动画、背景模糊功能

这是一个辅助开发的UI库,适用于某些特殊场景,如固定范围拖拽、动画、背景模糊效果等

浅析ButterKnife的实现 (二) —— BindResource

从最简单的 Resource 资源绑定来说明,大体了解整个开发基本流程。 包括 @BindString 和 @BindColor 注解的开发说明。

Android 进阶 教你打造 Android 中的 IOC 框架 【ViewInject】 (上)

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/39269193,本文出自:【张鸿洋的博客】1、概述首先我们来吹吹牛,什么叫IoC,...

自定义注解之编译时注解(RetentionPolicy.CLASS)(三)—— 常用接口介绍

前面介绍了关于编译时注解的使用方式,这里再补充一个关于注解处理器开发中的一些常用类、接口的使用方式和概念。 Element和TypeMirror 我觉得这两个是开发注解处理器最重要的两个概念,理解这两...

Android 打造编译时注解解析框架 这只是一个开始

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/43452969 ,本文出自:【张鸿洋的博客】1、概述记得很久以前,写过几篇博客,容...

浅析ButterKnife的实现 (三) —— BindView

相关文章: 如何实现ButterKnife (一) —— 搭建开发框架 如何实现ButterKnife (二) —— BindResource 这里开始讲解最常用的绑定View的注解了,这个会比资...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)