学习注解

来源:互联网 发布:c语言n位水仙花数程序 编辑:程序博客网 时间:2024/06/05 01:07

 

基本内置注释(JDK5.0自带的)

Override 注释能实现编译时检查,你可以为你的方法添加该注释,以声明该方法是用于覆盖父类中的方法。如果该方法不是覆盖父类的方法,将会在编译时报错。例如我们为某类重写toString() 方法却写成了tostring() ,并且我们为该方法添加了@Override 注释,那么编译是无法通过的。

 

Deprecated 的作用是对不应该在使用的方法添加注释,当编程人员使用这些方法时,将会在编译时显示提示信息,它与javadoc 里的 @deprecated 标记有相同的功能。

 

         SuppressWarnings 与前两个注释有所不同,你需要添加一个参数才能正确使用,这些参数值都是已经定义好了的,我们选择性的使用就好了,参数如下:

 

unused    没有被访问过的元素,去除警告。

deprecation   使用了过时的类或方法时的警告

unchecked  执行了未检查的转换时的警告,例如当使用集合时没有用泛型 (Generics) 来指定集合保存的类型

fallthrough   当 Switch 程序块直接通往下一种情况而没有 Break 时的警告

path   在类路径、源文件路径等中有不存在的路径时的警告

serial 当在可序列化的类上缺少 serialVersionUID 定义时的警告

finally    任何 finally 子句不能正常完成时的警告

all 关于以上所有情况的警告     

 

  1、java.lang.SuppressWarnings注解主要是用来去除警告信息的。

 2、SuppressWarnings注解中有一个变量,变量的名字是value,变量的数据类型是String[]

 3、在java语法中规定:注解中一旦有变量,在使用该注解的时候必须给变量指定值,不指定值,则编译无法通过。

 4、给注解的变量指定值的语法:@注解的名字(变量名1=变量值1,变量名2=变量值2....)

 5、注解中的变量名如果是“value”,则变量名可以省略。

 6、注解中变量值如果是一个数组,并且数组中只有一个元素“{}”可以省略

 

 

自定义注释类型

          

自定义的注解类型中添加变量。

 *

 *1、注解类型中添加变量,变量的数据类型只能是:String、基本数据类型、枚举类型、数组、Class类型其它类型不允许使用。

 *

 *2、注解中一旦有变量,在使用该注解的时候必须给变量指定值。语法:@注解类型名(变量名=值,.....)

 *

 * 3、如何指定变量,语法:变量的类型 变量名();

 

 

public@interfaceNewAnnotation {

Stringtitle();

 

Stringcontent();

 

intage();

 

}

 

@Annotation04(

title="问候",

content="你最近好吗?",

age=23)

publicvoid sayHello(){。。。}

 

 

  

java.lang.annotation.Target 

   

 使用范围

   

java.lang.annotation.Retention

   

 注解类型

   

java.lang.annotation.RetentionPolicy

   

 枚举类型

 

 

 * Retention注解主要是用来标注“其它注解”的,主要是用来设定

 * 注解的保持性策略。

 *

 * Retention和RentionPolicy联合使用。

 * RentionPolicy主要是用来指定保持性策略,被保留到什么时候!

 *

 *SOURCE        只保留在java源文件中。

 * CLASS   默认的行为,被保留在class文件中,但是不能被反射机制读取。

 *RUNTIME        被保留在class文件中,可以被反射机制读取。

 

 

  

Inherited

   

注解标注的注解支持继承机制。

   

@Documented

   

 

 

 

 

 

Classc =Class.forName("com.bjpowernode.javase.chapter11.reflect.JDBCUtil");

MethodgetConnectionMethod = c.getDeclaredMethod("getConnection");

/*

 * 判断getConnection方法上是否有DBAnnotation注解。

 */

if(getConnectionMethod.isAnnotationPresent(DBAnnotation.class)){

 

DBAnnotationdbAnnotation =(DBAnnotation)getConnectionMethod.getAnnotation(DBAnnotation.class);

 

Stringurl = dbAnnotation.url();

Stringuser = dbAnnotation.user();

Stringpassword = dbAnnotation.password();

Stringdriver = dbAnnotation.driver();

 

0 0
原创粉丝点击