黑马程序员--基础加强--第七篇--注解

来源:互联网 发布:vc和c语言的区别 编辑:程序博客网 时间:2024/06/14 15:14

ASP.Net+Android+IOS开发.Net培训期待与您交流!

1,注解是什么?

注解相当于一种标记,其实是一种类,在程序中调用某个注解,相当于调用某个类。在程序中加了注解就等于为程序加了某种标记,没加则没有这种标记。

以后,javac编译器,开发工具和应用程序,可以用反射来了解你的类及各种元素上是否有无何种标记,看你有什么标记,就去干相应的事儿。

标记可以加在包,类,字段,方法,方法的参数以及局部变量上。常见的注解是@SuppressWarning  @overwrite  @Deprecated

@SuppressWarning

@SuppressWarnings("Deprecated")//取消编译器对main中过时方法的警告public static void main(String[] args) {System.runFinalizersOnExit(true);}

@Deprecated

@Deprecated//把下面方法写成过时的public static void sayHello(){System.out.println("Hi");}
@Overwrite

@Override//这个还可以提示所写的类是不是重写public boolean equals(Object obj){System.out.println(obj);return false;}

2,注解在程序中有什么实际用途呢?

可以类中是否有注解

package Annotation;public class AnnotationTest { /** * @param args */@SuppressWarnings("Deprecated")//取消编译器对main中过时方法的警告public static void main(String[] args) {System.runFinalizersOnExit(true);if(AnnotationTest.class.isAnnotationPresent(ItcastAnnotation.class)){ItcastAnnotation annotation = AnnotationTest.class.getAnnotation(ItcastAnnotation.class);System.out.println(annotation);}}
package Annotation;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;//元注解 元信息 元数据@Retention(RetentionPolicy.RUNTIME)//注解的生命周期   SOURCE  CLASS@Target({ElementType.METHOD,ElementType.TYPE})public @interface ItcastAnnotation {}

为注解添加属性

属性就相当于注解的详细信息

可以添加方法,数组,枚举,甚至还可以添加注解

package Annotation;@ItcastAnnotation(annotationAttr=@MetaAnnotation("fix"),arrayAttr={1,2,3})public class AnnotationTest { /** * @param args */@SuppressWarnings("Deprecated")//取消编译器对main中过时方法的警告public static void main(String[] args) {System.runFinalizersOnExit(true);if(AnnotationTest.class.isAnnotationPresent(ItcastAnnotation.class)){ItcastAnnotation annotation = AnnotationTest.class.getAnnotation(ItcastAnnotation.class);System.out.println(annotation.color());//取属性应该使用方法的方式调用System.out.println(annotation.value());System.out.println(annotation.arrayAttr().length);//数组System.out.println(annotation.annotationAttr().value());//注解}}

package Annotation;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;//元注解 元信息 元数据@Retention(RetentionPolicy.RUNTIME)//注解的生命周期 @Target({ElementType.METHOD,ElementType.TYPE})public @interface ItcastAnnotation {String color() default "blue";String value() default "xyz";int[] arrayAttr();//如果数组只有一个数据,可以省略大括MetaAnnotation annotationAttr() default @MetaAnnotation("ltm");//注解的属性还是}

ASP.Net+Android+IOS开发.Net培训期待与您交流!



0 0