黑马程序员--基础加强--第七篇--注解
2014-01-18 19:06
477 查看
ASP.Net+Android+IOS开发.Net培训期待与您交流!
1,注解是什么?
注解相当于一种标记,其实是一种类,在程序中调用某个注解,相当于调用某个类。在程序中加了注解就等于为程序加了某种标记,没加则没有这种标记。
以后,javac编译器,开发工具和应用程序,可以用反射来了解你的类及各种元素上是否有无何种标记,看你有什么标记,就去干相应的事儿。
标记可以加在包,类,字段,方法,方法的参数以及局部变量上。常见的注解是@SuppressWarning @overwrite @Deprecated
@SuppressWarning
@Deprecated
2,注解在程序中有什么实际用途呢?
可以类中是否有注解
为注解添加属性
属性就相当于注解的详细信息
可以添加方法,数组,枚举,甚至还可以添加注解
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培训期待与您交流!
相关文章推荐
- 黑马程序员--基础加强--第七篇--注解
- 黑马程序员:基础加强注解和泛型
- 黑马程序员_java基础加强学习笔记之注解
- 黑马程序员:基础加强之注解和类加载器
- 黑马程序员-----基础加强-注解,类加载器
- 黑马程序员_java_基础加强_静态导入_反射_枚举_注解_内省_泛型
- 黑马程序员:基础加强(可变参数、增强for、枚举、javabBean、BeanUtils、注解、泛型)
- 黑马程序员_基础加强(注解)
- 黑马程序员 22 Java基础加强-04-注解篇
- 黑马程序员----java基础加强 注解与泛型
- 黑马程序员_Jav基础加强之注解(annotation)
- 黑马程序员_基础加强之注解
- 黑马程序员_基础加强_注解
- 黑马程序员_java基础加强_静态导入_反射_枚举_注解_内省_泛型_代理
- 黑马程序员--Java基础加强(4)--- JDK1.5新特性之JavaBean、注解
- 黑马程序员-----基础加强-注解,类加载器
- 黑马程序员-JAVA基础加强-内省与注解
- 黑马程序员 基础加强 注解
- 黑马程序员-张老师基础加强4-注解
- 黑马程序员---Java基础加强---JDK1.5新特性:注解