首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

JAVA 注脚示例 详解

2013-11-16 
JAVA 注解示例 详解注解(Annotation) 为我们在代码中天界信息提供了一种形式化的方法,是我们可以在稍后某

JAVA 注解示例 详解
  注解(Annotation) 为我们在代码中天界信息提供了一种形式化的方法,是我们可以在稍后

某个时刻方便地使用这些数据(通过 解析注解 来使用这些数据)。
    注解的语法比较简单,除了@符号的使用以外,它基本上与java的固有语法一致,java内置了三种

注解,定义在java.lang包中。
    @Override  表示当前方法是覆盖父类的方法。
    @Deprecated  表示当前元素是不赞成使用的。
    @SuppressWarnings 表示关闭一些不当的编译器警告信息。

下面是一个定义注解的实例

package Test_annotation;            import java.lang.annotation.Documented;      import java.lang.annotation.Inherited;      import java.lang.annotation.Retention;      import java.lang.annotation.Target;      import java.lang.annotation.ElementType;      import java.lang.annotation.RetentionPolicy;            /*      * 元注解@Target,@Retention,@Documented,@Inherited      *       *     @Target 表示该注解用于什么地方,可能的 ElemenetType 参数包括:      *         ElemenetType.CONSTRUCTOR 构造器声明      *         ElemenetType.FIELD 域声明(包括 enum 实例)      *         ElemenetType.LOCAL_VARIABLE 局部变量声明      *         ElemenetType.METHOD 方法声明      *         ElemenetType.PACKAGE 包声明      *         ElemenetType.PARAMETER 参数声明      *         ElemenetType.TYPE 类,接口(包括注解类型)或enum声明      *               *     @Retention 表示在什么级别保存该注解信息。可选的 RetentionPolicy 参数包括:      *         RetentionPolicy.SOURCE 注解将被编译器丢弃      *         RetentionPolicy.CLASS 注解在class文件中可用,但会被VM丢弃      *         RetentionPolicy.RUNTIME VM将在运行期也保留注释,因此可以通过反射机制读取注解的信息。      *               *     @Documented 将此注解包含在 javadoc 中      *           *     @Inherited 允许子类继承父类中的注解      *         */      @Target(ElementType.METHOD)      @Retention(RetentionPolicy.RUNTIME)      @Documented      @Inherited      /*      * 定义注解 Test      * 注解中含有两个元素 id 和 description      * description 元素 有默认值 "no description"      */      public @interface Test {          public int id();          public String description() default "no description";      } 


下面是一个使用注解 和 解析注解的实例


  
 package Test_annotation;            import java.lang.reflect.Method;            public class Test_1 {          /*          * 被注解的三个方法          */          @Test(id = 1, description = "hello method_1")          public void method_1() {          }                @Test(id = 2)          public void method_2() {          }                @Test(id = 3, description = "last method")          public void method_3() {          }                /*          * 解析注解,将Test_1类 所有被注解方法 的信息打印出来          */          public static void main(String[] args) {              Method[] methods = Test_1.class.getDeclaredMethods();              for (Method method : methods) {                  /*                  * 判断方法中是否有指定注解类型的注解                  */                  boolean hasAnnotation = method.isAnnotationPresent(Test.class);                  if (hasAnnotation) {                      /*                      * 根据注解类型返回方法的指定类型注解                      */                      Test annotation = method.getAnnotation(Test.class);                      System.out.println("Test( method = " + method.getName()                              + " , id = " + annotation.id() + " , description = "                              + annotation.description() + " )");                  }              }          }            }  


【转载地址】http://www.iteye.com/topic/400085
【参考地址】http://www.cnblogs.com/phoebus0501/archive/2011/02/21/1960077.html

热点排行