注解定义和使用
注解定义为:
public @interface AnnotationName{
}
使用注解
@ AnnotationName
public void func(){
}
Java提供了4个元注解
@Retention:保留的阶段。
@Target:注解修饰的目标,可以说类,方法,成员变量,包。
@Documented:是否被javadoc提取成文的。
@Inherited:注解是否能继承。
自定义注解
注解的成员变量定义:
public @interface AnnotationName{
String name() default "abc";
int age() default 33;
boolean flag();
}
其中default修饰的表示默认值。
- 注意:Annotation修饰类,方法,成员变量后不会自己生效,不会对程序有任何影响。只有为这些注解提供处理的工具类才会有用。
实例
定义注解类
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Testable {
boolean isSkiped() default false;
String name();
}
被注解修饰的类
public class Foo {
public static void m1() {
System.out.println("I am m1");
}
@Testable(isSkiped = false, name = "methond2")
public static void m2() {
System.out.println("I am m2");
}
@Testable(name = "methond3")
public static void m3() {
System.out.println("I am m3");
}
@Testable(isSkiped = true, name = "methond4")
public static void m4() {
System.out.println("I am m4");
}
}
处理注解的工具类
import java.lang.reflect.*;
public class TestAnnotation {
public static void main(String[] args) throws SecurityException,
ClassNotFoundException, IllegalAccessException,
IllegalArgumentException, InvocationTargetException {
for (Method m : Class.forName("Foo").getMethods()) {
if (m.isAnnotationPresent(Testable.class)) {
System.out.print(m.getName()
+ " is Annotation element, so invoke result is: ");
m.invoke(null);
} else {
System.out.println(m.getName() + " is not Annotation element");
}
}
}
}
输出:
m1 is not Annotation element
m2 is Annotation element, so invoke result is: I am m2
m3 is Annotation element, so invoke result is: I am m3
m4 is Annotation element, so invoke result is: I am m4
wait is not Annotation element
wait is not Annotation element
wait is not Annotation element
equals is not Annotation element
toString is not Annotation element
hashCode is not Annotation element
getClass is not Annotation element
notify is not Annotation element
notifyAll is not Annotation element
<script type="text/javascript">
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('<ul/>').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('<li/>').text(i));
};
$numbering.fadeIn(1700);
});
});
</script>
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
java注解annotation
Java注解Annotation用起来很方便,也越来越流行,由于其简单、简练且易于使用等特点,很多开发工具都提供了注解功能,不好的地方就是代码入侵比较严重,所以使用的时候要有一定的选择性。 这篇文章将利用注解,来做...
主要介绍了java 注解annotation的使用以及反射如何获取注解的相关资料,需要的朋友可以参考下
java1.5 annotation注释源代码,
JAVA注解(Annotation).doc JAVA注解(Annotation).doc
Java Annotation注解技术
Java 注解(Annotation) - 请认准 ih0qtq
本文全面讲述了Java注解Annotation与Java自定义注解及相关内容,大家可以认真看看
新手学Java注解的最好资料,15分钟迅速开发
Java.Annotation注解.part4
如果你想知道java annotation是什么?你可以看看
Java.Annotation注解.part3
Java.Annotation注解.part2
Java.Annotation注解.part1
Java基础复习笔记12Java自定义注解Annotation的使用
利用annotation(注解)开放简化java开放步骤
JPA、EJB、Spring零配置等等怎么使用相信各位读者都能掌握,这里主要是说如何自定义自己的注解,自己使用自定义的注解。
本文针对java初学者或者annotation初次使用者全面地说明了annotation的使用方法、定义方式、分类。初学者可以通过以上的说明制作简单的annotation程序,但是对于一些高级的annotation应用(例如使用自定义annotation...
主要为大家详细介绍了Java注解Annotation,具有一定的参考价值,感兴趣的小伙伴们可以参考一下