码迷,mamicode.com
首页 > 其他好文 > 详细

How do annotations work internally--转

时间:2016-06-06 17:00:42      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:

原文地址:http://stackoverflow.com/questions/18189980/how-do-annotations-work-internally

The first main distinction between kinds of annotation is whether they‘re used at compile time and then discarded (like @Override) or placed in the compiled class file and available at runtime (like Spring‘s @Component). This is determined by the @Retention policy of the annotation. If you‘re writing your own annotation, you‘d need to decide whether the annotation is helpful at runtime (for autoconfiguration, perhaps) or only at compile time (for checking or code generation).

When compiling code with annotations, the compiler sees the annotation just like it sees other modifiers on source elements, like access modifiers (public/private) or final. When it encounters an annotation, it runs an annotation processor, which is like a plug-in class that says it‘s interested a specific annotation. The annotation processor generally uses the Reflection API to inspect the elements being compiled and may simply run checks on them, modify them, or generate new code to be compiled. @Override is an example of the first; it uses the Reflection API to make sure it can find a match for the method signature in one of the superclasses and uses the Messagerto cause a compile error if it can‘t.

There are a number of tutorials available on writing annotation processors; here‘s a useful one. Look through the methods on the Processor interface for how the compiler invokes an annotation processor; the main operation takes place in the process method, which gets called every time the compiler sees an element that has a matching annotation.

 

How do annotations work internally--转

标签:

原文地址:http://www.cnblogs.com/davidwang456/p/5564108.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!