码迷,mamicode.com
首页 > 其他好文 > 详细

J2SE基础(注解的使用)

时间:2018-09-27 12:04:01      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:try   基础   name   ted   eth   输出   err   没有   17.   

注解:

内置注解:

(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基础(注解的使用)

标签:try   基础   name   ted   eth   输出   err   没有   17.   

原文地址:https://www.cnblogs.com/smileFaceJiajia/p/9712240.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!