J2SE基础(注解的使用)

Posted smilefacejiajia

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了J2SE基础(注解的使用)相关的知识,希望对你有一定的参考价值。

注解:

内置注解:

(1)@SuppressWarning({"unused","rawtypes","unchecked"})  忽略掉(无视)警告,如未使用的变量,未使用泛型,泛型报错检查等。

(2)@Deprecated 忽视过时方法,可在自己写的方法前,加上@Deprecated,则该方法上有删除线,表示是个过时方法。

(3)@Override 重写,使用此注释,则方法一定重写了父类中的某个方法;如没有重写,会导致编译失败。

自定义注解:

(1)如何生成?new->Annotation

(2)public @interface MyAnnotation{

String value();//这是名为value的抽象方法。

}

元注解:

用于注释自定义注解的注解

(1)@Target:用于指明注解的使用范围

在自定义注解上加上@Target(ElementType.METHOD)则自定义注解只能用在方法上。

(2)@Retention:指明注解的保留政策

在自定义注解上加上@Retention(RetentionPolicy.SOURCE),则注解信息只在源文件中有效,编译时,注解被自动去除,反编译后,也无法看到注解。

@Retention(RetentionPolicy.CLASS),编译时,编译器不去除,保留在.class文件中。

@Retention(RetentionPolicy.RUNTIME),可一直保留注解,可以在运行过程中获取注解(通过反射机制获取)

实例如下:

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.METHOD)//指明注解的使用范围在method中
@Retention(RetentionPolicy.RUNTIME)//保留政策定义为运行时,可以通过反射获取注解
public @interface MyAnnotation {
    //这是名为value的抽象方法,返回类型:String,如果不加default,则在使用注解的时候需要给予值,即使给予空串也要给一个初始值。
    String value() default "defaultname1";
    String value2() default "defaultname2";
}


import java.lang.reflect.Method;

public class TestMyAn {
    // 如果自定义注解中,没有给予默认值,这边会要求给予默认值,也可以在这里修改值。
    // @MyAnnotation(value="rename111",value2="rename222")//输出@java117.day0927.MyAnnotation(value2=rename222,
    // value=rename111)
    @MyAnnotation // 输出@java117.day0927.MyAnnotation(value2=defaultname2,
                    // value=defaultname1)
    @Deprecated
    public void fun1() {
        System.out.println("fun1有个自定义注解MyAnnotation");
    }

    public static void main(String[] args) {
        @SuppressWarnings("rawtypes")
        Class clazz = TestMyAn.class;
        try {
            @SuppressWarnings("unchecked")
            Method method = clazz.getDeclaredMethod("fun1");
            MyAnnotation annotation = method.getAnnotation(MyAnnotation.class);
            System.out.println(annotation);
        } catch (NoSuchMethodException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

 

以上是关于J2SE基础(注解的使用)的主要内容,如果未能解决你的问题,请参考以下文章

Java中@SuppressWarnings注解用法(转)

J2SE基础:2.对象的创建与使用

@SuppressWarnings注解用法详解

java 注解

J2SE基础-环境配置

J2SE之基础语法