zoukankan      html  css  js  c++  java
  • java之注解

    注解使用

    一、java的常用注解

     @Override                             重写覆盖方法

     @SuppressWarnings        压住警告可用于类和方法

     @Deprecated                      声明类或方法过时


     注解@Override用在方法上,当我们想重写一个方法时,在方法上加@Override,当我们方法的名字出错时,编译器就会报错。

     

     注解@SuppressWarnings用来压制程序中出来的警告,比如在没有用泛型或是方法已经过时的时候。

      注解@Deprecated,用来表示某个类的属性或方法已经过时,不想别人再用时,在属性和方法上用@Deprecated修饰。

     

    二、自定义注解

       I. 元注解 

         1、@Target   表明注解的作用域

          作用域被定义为枚举类型ElementType

         ElementType.ANNOTATION_TYPE      作用在注解上

         ElementType.CONSTRUCTOR            作用在构造方法

         ElementType.FIELD                               作用在属性上

         ElementType.LOCAL_VARIABLE       作用在本地变量

         ElementType.METHOD                         作用在方法

         ElementType.PACKAGE                       作用在包

         ElementType.PARAMETER                 作用在参数

         ElementType.TYPE                                 作用在类、接口或枚举类型

     注解@Retention可以用来修饰注解,是注解的注解,称为元注解。


       2、@Retention

       注解有一个属性RetentionPolicy 

        RetentionPolicy是一个枚举类型有3个值
          RetentionPolicy.CLASS      表示注解的信息被保留在class文件
          RetentionPolicy.SOURCE    不会留在class文件中,注解的信息只会留在源文件
          RetentionPolicy.RUNTIME  注解的信息被保留到运行时,所以他们可以用反射的方式读取。


       3、@Documented

         注解表明制作Javadoc时,是否将注解信息加入文档。如果注解在声明时使用@Document的,则在制作Javadoc时注解信息会加入javadoc

       

       4、@Inherited

         注解表示注解是否被子类继承。默认情况是不会继承。当在注解声明时时有@Inherited,则注解将会被该注解的类的子类所继承。


       II、定义注解

    定义新的Annotation类型使用@interface关键字(在原有interface关键字前增加@符号)。定义一个新的Annotation类型与定义一个接口很像,例如:

    public @interface Test{
    }

    定义完该Annotation后,就可以在程序中使用该Annotation。使用Annotation,非常类似于public、final这样的修饰符,通常,会把Annotation另放一行,并且放在所有修饰符之前。例如:

    @Test
    public class Person{
    }


      III、定义注解的成员变量
    Annotation只有成员变量,没有方法。Annotation的成员变量在Annotation定义中以“无形参的方法”形式来声明,其方法名定义了该成员变量的名字,其返回值定义了该成员变量的类型。例如:

    public @interface MyAnnotation{
        string value();
        int age();
    }

    示例中定义了2个成员变量,这2个成员变量以方法的形式来定义。


     

        III、注解参数类型

       注解参数必须是所有基本类型,包括(int, float, boolean), String, Class, enum, Annotation, 以及以上类型的数组


        IV、注解参数赋值

        注解的参数要么在定义是赋值,要么在使用时赋值。如果注解中定义参数value,并且在使用时,value是唯一的需要赋值的参数,则无需指出参数名字,直接把参数值填在括号里。

    @MyAnnonation(value="amethod",count=2)
    public void aMethod(){
    } 
    @Target(ElementType.METHOD)            //注解作用在方法
    @Retention(RetentionPolicy.RUNTIME)    //注解保留到运行时
    public @interface MyAnnonation  
    {  
     String value() ; 
     int count() default 1;
    }
    @MyAnnonation("method")
    public void method(){
    }  

    RetentionPolicy.RUNTIME 可以让你从JVM中读取Annotation注解的信息,以便在分析程序的时候使用.


    @MyAnnonation(value="amethod",count=2)
    public void aMethod(){
    } 
    @Target(ElementType.METHOD)            //注解作用在方法
    @Retention(RetentionPolicy.RUNTIME)    //注解保留到运行时
    public @interface MyAnnonation  
    {  
     String value() ; 
     int count() default 1;
    }
    @MyAnnonation("method")
    public void method(){
    }  

  • 相关阅读:
    父容器的flowover:hidden 必须配合父容器的宽高height width才能生效
    css使 同一行内的 文字和图片 垂直居中对齐?
    vim查找替换
    要让div中的float不会自动显示到下一行来?
    如何理解clear的css属性?
    div+css使多行文字垂直居中?
    VMnet1和V8
    unslider的用法详解
    json的中括号和大括号的使用?
    如何合理定价,定价定天下,必须要学会这个哦!
  • 原文地址:https://www.cnblogs.com/maokun/p/6710828.html
Copyright © 2011-2022 走看看