java-注解

1.注解(Annotation)

    注解相当一个类或接口,每一个注解都是一个实例对象
    注解的使用形式:@interface即@注解类名

  定义注解类:

    @interface A

    {…}

    使用了“注解类”的类:

     @A

     class B{}

  对“使用了注解类的类”进行反射操作:

     class C {

      B.class.isAnnotationPresent(A.class);

      A a=(A)B.class.getAnnotation(A.class); }

2.注解类的生命周期

   源文件(.java),字节码文件(.class),内存中的字节码(运行时期被加载到内存当中).

   可用枚举类:RetentionPolicy下的常量表示

RetetionPolicy.SOURCE、RetetionPolicy.CLASS、RetetionPolicy.RUNTIME

3.@Override

   java.lang.Override

    表示一个方法声明打算重写超类中的另一个方法声明。
    如果方法利用此注释类型进行注解但没有重写超类方法,则编译器会生成一条错误消息。
    比如重写的方法名不是父类中要重写方法名,则系统会识别出来并报错。
    toString 写成 tostring.

public class Person
{
   @Override
    public string toString ()
    {
       return null;
    }
}

4.@Deprecated

不鼓励程序员使用这样的元素,通常是因为它很危险或存在更好的选择。在使用不被赞成的程序元素或在不被赞成的代码中执行重写时,编译器会发出警告。

@Deprecated  //@Deprecated表示该方法过时

     public static void sayHi()
    {
        System.out.println("hi,world");
    }

5.@SuppressWarnings

   用来忽略某种警告,使用方式@SuppressWarnings(value=

{TYPE,FIELD,METHOD,PARAMETER,CONSTRUCTOR,LOCAL_VARIABLE})

  eg:@SuppressWarnings(value={"deprecation"});//忽略“deprecation”类型的警告

@SuppressWarnings(value={"deprecation"})
public class Demo
{
    public static void main (String []args)
    {     
           A  a=new A();
          a.ma();

    class  A
    {  
        @Deprecated
        public void ma()
        {
          System.out.println("ma方法");
        }
    }

}}

6.归档

   jdk提供的一种可以将多个文件或目录合并/压缩成单个文件(.jar)的归档工具。

   jar –cvf  mytest.jar  A.class  B.class ;//将这两个class文件打包成mytest.jar文件
   打包命令,对于package xxx的xx.java文件打包

   javac  -d 打包后文件的路径  打包的Java文件

   javac  -d  .  Person.java ;//Person.java文件下“package  hq.packag;”

7.@Retention

   用来表示其他注解的生命周期.

  @Retention(RetentionPolicy.SOURCE)

public @interface AnnotationInter {
 
}

8.@Target

   用来表示其他注解的使用范围,枚举ElementType下的不同常量规定了范围

   TYPE(类,接口(包括注释类型),枚举),FIElD(字段),METHOD(方法),

   ANNOTATION_TYPE(注释类型),CONSTRUCTOR(构造方法),PACKAGE(包)等。

@Target({ElementType.TYPE,ElementType.METHOD})
public @interface AnnotationInter {
 
}

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。