Java中的注解--annotation
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java中的注解--annotation,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4471字,纯文字阅读大概需要7分钟。
内容图文
![Java中的注解--annotation](/upload/InfoBanner/zyjiaocheng/831/725d893070af421ebe5af25eceb88444.jpg)
Java中的基本注解,几乎框架中的注解都是依赖Java中的基本注解,很有必要学习一下Java中的基本注解。。。jdk 5 增加的新特性
一、注解的定义以及Java中常见的注解
注解就相当于一种标记,加了注解,就相当于为程序打上了某中标记,没加,则相当于没有这种标记,以后,javac编译器,开发工具和其他程序可以用反射来了解你的类和各种元素上有五任何标记,看你有何种标记,就去干相应的事,标记可以加在包、类、字段、方法、方法的参数以及局部变量上。
注解相当于一个特殊的类,人家写好的注解,你才可以引用,带上注解就相当于引用了一个注解所代表的类,Java中比较常见的几个注解,比如:
@Override、@SuppressWarnings("deprecation")、@Deprecated
二、自定义注解以及应用
注意:理解元注解的定义以及使用范围
1 // 这个是元注解 在注解类上的注解 2 @Retention(RetentionPolicy.RUNTIME) 3 // 这个指定在哪些类型上能用 方法、类、属性还是什么其他的呢 4 // type 是比Class类范围更加大的一种表示方法 type可以表示类、接口或者是枚举或者是。。。 5 @Target({ElementType.METHOD,ElementType.TYPE}) 6 public @interface ItcastAnnotation { 7 8 } 9 @ItcastAnnotation 10 public static void main(String[] args) { 11 12 boolean flag = AnnotationTest.class.isAnnotationPresent(ItcastAnnotation.class); 13 14 if(flag){ 15 ItcastAnnotation annotation = AnnotationTest.class.getAnnotation(ItcastAnnotation.class); 16 System.out.println(annotation); 17 } 18 19 }
@Retention元注解中的RetentionPolicy有三种枚举:RetentionPolicy.SOURCE、RetentionPolicy.CLASS、RetentionPolicy.RUNTIME 对应着三个阶段 分别是 java源文件 --> class文件 --> 内存中字节码文件,默认的是RetentionPolicy.CLASS
@Target元注解中ElementType有几种不同类型的枚举,意思就是我定义的这个注解可以用到什么地方,是在包上、还是在类上、或者是在方法上、还是属性、构造方法上,记住这个元注解代表的什么含义就OK了。
三、为注解增加基本属性
注意:在oracle发布的 The Java® Language Specification java语言规范中规定了属性的返回值类型可以是:(从中拿过来的)
The return type of a method declared in an annotation type must be one of the following, or a compile-time error occurs:
? A primitive type 基本类型
? String 字符串
? Class or an invocation of Class (§4.5) 类或者是类的调用
? An enum type 枚举类型
? An annotation type 注解类型
? An array type whose component type is one of the preceding types (§10.1). 以上类型的数组形式
This rule precludes elements with nested array types,such as: //此规则排除具有嵌套数组类型的元素 这种是不可以的
@interface Verboten {
String[][] value();
}
1 // 这个是元注解 在注解类上的注解 2 @Retention(RetentionPolicy.RUNTIME) 3 // 这个指定在哪些类型上能用 方法、类、属性还是什么其他的呢 4 // type 是比Class类范围更加大的一种表示方法 type可以表示类、接口或者是枚举或者是。。。 5 @Target({ElementType.METHOD,ElementType.TYPE}) 6 public @interface ItcastAnnotation { 7 8 //这是一个方法,返回一个字符串,用注解的时候需要设置属性值 9 String color() default "blue"; 10 11 // 这个是比较特殊的,当注解中只有value属性时候,引用注解的时候可以只写数值 12 // @ItcastAnnotation("abc") 这个注解的意思就是注解中只有一个value属性 13 // 但是你可以类似上面给其他属性设置默认值 @ItcastAnnotation("abc")的意思就是 @ItcastAnnotation(value="abc",color="blue") 14 String value(); 15 16 // 数组的属性 17 int[] arrayAttr() default {1,2,3}; 18 19 // 枚举类型 20 TrafficLamp lamp() default TrafficLamp.RED; 21 22 // 注解类型 返回值是注解类型的属性值 23 MetaAnnotation annotationAttr() default @MetaAnnotation("111"); 24 } 25 26 // 这个是如何使用自己定义的注解的属性,以及如何获取注解的属性值 27 @ItcastAnnotation(annotationAttr=@MetaAnnotation("112233"),color="red",value="abc",arrayAttr={1,2}) 28 public class AnnotationTest { 29 30 31 @SuppressWarnings("deprecation") 32 // @Override 33 // @Deprecated 34 @ItcastAnnotation("abc") 35 public static void main(String[] args) { 36 37 System.runFinalizersOnExit(true); 38 39 boolean flag = AnnotationTest.class.isAnnotationPresent(ItcastAnnotation.class); 40 41 if(flag){ 42 ItcastAnnotation annotation = AnnotationTest.class.getAnnotation(ItcastAnnotation.class); 43 System.out.println(annotation); 44 System.out.println(annotation.color()); 45 System.out.println(annotation.value()); 46 System.out.println(annotation.arrayAttr().length); 47 System.out.println(annotation.lamp().nextLamp().name()); 48 System.out.println(annotation.annotationAttr().value()); 49 } 50 51 } 52 53 }
内容总结
以上是互联网集市为您收集整理的Java中的注解--annotation全部内容,希望文章能够帮你解决Java中的注解--annotation所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。