`

Java中内置注释详解

阅读更多

一、 Java 注释( Annotation :

1 @Override 注释

该注释仅应用于方法,用来指明被其注释的方法必须重写超类中的方法,否则会发生编译错误。

2 @Deprecated 注释

该注释用于声明元素已经过时,不鼓励使用。如果坚持使用,可能会带来潜在问题。如下例子:

import java.util.ArrayList;
    import java.util.List;

public class AnnoSamp1 {
     @Deprecated
     public void method1(){}
     public List method2(){
     List list = new ArrayList();
     list.add("007");
     return list;
     }
}

注:此处程序代码见相册中,有实际运行情况!
    方法 method1() 已经被注释为过时方法,所以如果由另外一个程序调用了 AnnoSamp1 ()类的 method1() 方法,编译时会提示过时。

3 @SuppressWarnins 注释

   SuppressWarnins 注释允许开发人员控制编译器警告的发布,例如泛型使所有的类型安全操作成为可能,如果没有使用泛型而存在类型安全问题,编译器将会抛出警告。 SuppressWarnins 使用格式为:

@SuppressWarnins( 参数名 )

参数表如下:

1 deprecated: 过时的类或方法

2 finally:finally 子句无法正常完成

3 fallthrough:switch 程序块中没有使用 break

4 serial: 类缺少 serialVersionUID

5 unchecked: 未经检查的类型转换

6 unused: 定义了但从未使用

7 all: 以上全部情况

4 @Target 注释

   Target 注释用来限制注释的使用范围,其使用格式是:

@Target({ 应用类型 1 ,应用类型 2 …….})

其中应用类型如下:

1 TYPE :类、接口、注释或枚举类型

2 FIELD :属性,包括枚举常量

3 METHOD :方法

4 PARAMETER :参数

5 CONSTRUCTOR :构造方法

6 LOCAL_VARIABLE :局部变量

7 ANNOTATION_TYPE :注释类

8 PACKAGE :包

二、自定义注释

可以为自己创建的注释类提供成员,例如:

Public @interface InTesting{

String value();

}

这是只有一个成员的注释(单成员注释),可以这样来使用它:

@InTesting(“This method returns all department info”)

Public void getMsg(){….}

由更简便的使用方法:

@InTesting(“This method returns all department info”)

Public void getMsg(){…}

当然,注释不只是单成员这么简单,可以更为复杂些,例如:

Public @interface InTesting{

String author();

String description() default “Testing”;

float ver();

}

三、保留策略

Java 提供了 3 种保留策略:

1 RetentionPolicy.CLASS: 编译后保留在 class 文件中,运行时忽略。

2 RetentionPolicy.RUNTIME: 编译后保留在 class 文件中,运行时 Java 虚拟机可读取。

3 RetentionPolicy.SOURCE: 只存在于源文件中,编译后保留在 class 文件中 .

例如:

import java.lang.annotion.Target;

import java.lang.annotion.ElementType.METHOD;

import java.lang.annotion.Retention;

import java.lang.annotion.RetentionPolicy;

@Retention(RetentionPolicy.RUNTIME)

@Target({METHOD})

public @interface InTesting{

String author();

   String description() default "Testing";

   float ver ();

}

四、读取注释

Java java.lang.reflect 包中提供了 getAnnotations() 方法,以数组的形式返回注释信息。该方法可用于类、方法、构造方法等类型的对象中。示例如下:

首先来编写一个简单的类 Message ,该类的两个方法均被注释:

public class Message{

    @InTesting(author = "cg ",description = " 获取备注信息 ",ver = 1.1f)

    public void getMsg(){

    System.out.println("get message info....");

    }

@InTesting(author = "cg ",description = " 计算利润率,测试中 ",ver = 1.2f)

    public void calcProfitRat(){

     System.out.println("Calculate...");

    }

}

接下来编写一个打印输入 Message 类所有方法注释信息的程序:

import java.lang.annotation.Annotation;

import java.lang.reflect.Method;

public class ReadAnno{

     public static void main(String[] args ) throws SecurityException,NoSuchMethodException{

         Class<Message> c = Message.class;// 获得 Message 类的实例

          Method[] m = c.getMethods(); // 获取该类的全部方法

         Annotation[] annotations;// 声明注释变量

          for(Method method:m){

          annotations = method.getAnnotations(); // 获得当前方法的注释信息

          System.out.println(annotation);

          }

     }

}

程序运行后输出结果如下:

       @ cn.edu.sinomacro.coursemanag .InTesting(description= 获取备注信息 ,author=cg ,ver =1.1)

@cn.edu.sinomacro.coursemanag.InTesting(description= 计算利润率,测试中 ,author=cg ,ver =1.2)

注意: cn.edu.sinomacro.coursemanag 是自定义的包名。

分享到:
评论

相关推荐

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    此外,本书的配套光盘还免费提供了价值人民币330元的java教学视频,对java语言进行了全面讲解,帮助一些不会java语言的读者快速地从java基础知识的学习中过渡到java web的学习与开发上. 第1部分 xml篇. 第1章 xml...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    此外,本书的配套光盘还免费提供了价值人民币330元的java教学视频,对java语言进行了全面讲解,帮助一些不会java语言的读者快速地从java基础知识的学习中过渡到java web的学习与开发上. 第1部分 xml篇. 第1章 xml...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    此外,本书的配套光盘还免费提供了价值人民币330元的java教学视频,对java语言进行了全面讲解,帮助一些不会java语言的读者快速地从java基础知识的学习中过渡到java web的学习与开发上. 第1部分 xml篇. 第1章 xml...

    java基础案例与开发详解案例源码全

    2.3.4 Java代码中的注释23 2.3.5 常见错误解析24 2.4 Java类库组织结构和文档27 2.5 Java虚拟机简介28 2.6 Java技术两种核心运行机制29 2.7 上机练习30 第3章 3.1 变量32 3.1.1 什么是变量32 3.1.2 为什么需要变量32...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    此外,本书的配套光盘还免费提供了价值人民币330元的java教学视频,对java语言进行了全面讲解,帮助一些不会java语言的读者快速地从java基础知识的学习中过渡到java web的学习与开发上. 第1部分 xml篇. 第1章 xml...

    J2EE应用开发详解

    内容为J2EE应用开发详解中的源代码 第1章 Java Web应用开发简介 1 1.1 Java EE应用概述 1 1.2 Java EE概念 1 1.2.1 Java EE多层模型 1 1.2.2 Java EE体系结构 2 1.3 Java EE的核心API与组件 4 1.4 Web服务器和应用...

    Java Web程序设计教程

    3.2.2jsp注释方式 37 3.2.3jsp声明方式 38 3.2.4jsp表达式的应用 39 3.2.5jsp的脚本段 39 3.2.6jsp的编译指令 40 3.2.7jsp的动作指令 41 3.2.8jsp的内置对象 43 3.3认识servlet 46 3.3.1servlet的开发 46 ...

    SpringBoot线程池详解含完整示例(值得珍藏)

    Spring Boot中内置了多种线程池,为应用程序提供快速响应和高吞吐量的运行环境。线程池在Spring Boot中起着至关重要的作用,它能够有效地管理和复用线程,降低系统的开销。本文将详细介绍线程池的基本参数、每一种...

    Java开发技术大全 电子版

    12.3.8内置注释386 12.3.9使用注释的一些限制390 12.4本章小结390 第13章常用工具类391 13.1Runtime类的使用391 13.1.1内存管理392 13.1.2执行其他程序393 13.2System类的使用395 13.2.1利用...

    Spark从入门到精通

    5、Spark案例实战的代码,几乎都提供了Java和Scala两个版本和讲解(一次性同时精通Java和Scala开发Spark); 6、大量全网唯一的知识点:基于排序的wordcount,Spark二次排序,Spark分组取topn,DataFrame与RDD的两种...

    autoJS1688示例.zip

    Fuck加密机(不支持注释不支持双斜杠不支持ui).js funnyEncoderPlus2.0.js gestures动作数据生成.js getPixels参数详解.js gitee-webhook.js git常用命令.js gpsui.js gps时间获取.js HAHA小视频无限撸money...

    jsp最详细教程 最容易入门

    JSP 语法...............................................................Java 程序片......................................40 2.4 表达式...........................................45 2.5 JSP 中的注释...........

Global site tag (gtag.js) - Google Analytics