码迷,mamicode.com
首页 > 编程语言 > 详细

java的注解基础入门

时间:2018-07-15 00:19:37      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:oid   防止   void   code   extends   getc   ram   文件中   etc   

1.常用的注解

@overrive继承//继承的方法时建议都添加该注解,防止我们不是重写方法

@deprecated  废弃的方法

@suppresswarning  警告信息,属性值all表示所有的意思

2.元注解

@target描述注解使用的范围

说明

@target(value=ElementType.值)

属性值:

Package  使用范围包

Type     使用范围类接口枚举annotation类型  

Constructor   使用范围构造器

Field   使用范围属性

Method  使用范围方法

Local_VARIABLE 用于局部变量

Parameter 用于描述参数

@retention 描述注解作用的时机

@retention(RetentionPolicy.值)

Source  注解将被编译器丢弃

Class  注解在class文件中可用,但会被VM丢弃

Runtime VM将在运行期也保留注释,因此可以通过反射机制读取注解的信息//需要反射获取某些注解的信息必须添加信息

3.创建注解

public class AnnotationDemo {
    public static void main(String[] args) {
        AnnotationDemoTest1 annotationDemo1 = new AnnotationDemoTest1();
        Class<? extends AnnotationDemoTest1> class1 = annotationDemo1.getClass();
        if (class1.isAnnotationPresent(ReflectAnnotationdemo1.class)) {
            ReflectAnnotationdemo1 annotation = class1.getAnnotation(ReflectAnnotationdemo1.class);
            System.out.println(annotation.value());
        }
    }
}

// RetentionPolicy 枚举 RetentionPolicy.RUNTIME 运行时起作用 这样才能反射
@Retention(RetentionPolicy.RUNTIME)
// ElementType 枚举 ElementType.TYPE 修饰于类,接口,枚举,注解
@Target(ElementType.TYPE)
@interface ReflectAnnotationdemo1 {
    // String test()
    // value可以省略 value= ,省略的前提是只有value一个属性
    String value();
}

@ReflectAnnotationdemo1("111")
class AnnotationDemoTest1 {

}
public class AnnotationDemo2 {
    public static void main(String[] args) {
        AnnotationDemoTest2 annotationDemo1 = new AnnotationDemoTest2();
        Class<? extends AnnotationDemoTest2> class1 = annotationDemo1.getClass();
        if (class1.isAnnotationPresent(ReflectAnnotationdemo2.class)) {
            ReflectAnnotationdemo2 annotation = class1.getAnnotation(ReflectAnnotationdemo2.class);
            System.out.println(annotation.test());
            System.out.println(annotation.test1()[0]);
        }
    }
}

@Retention(RetentionPolicy.RUNTIME)
@interface ReflectAnnotationdemo2 {
    //设置默认的值
    String  test() default "111";
    int [] test1() default {1,2};
    
}

@ReflectAnnotationdemo2
class AnnotationDemoTest2 {

}
public class AnnotationDemo3 {
    public static void main(String[] args) {
        AnnotationDemoTest3 annotationDemo1 = new AnnotationDemoTest3();
        Class<? extends AnnotationDemoTest3> class1 = annotationDemo1.getClass();
        if (class1.isAnnotationPresent(ReflectAnnotationdemo3.class)) {
            ReflectAnnotationdemo3 annotation = class1.getAnnotation(ReflectAnnotationdemo3.class);
            System.out.println(annotation.test());
            System.out.println(annotation.test1()[0]);
        }
    }
}

@Retention(RetentionPolicy.RUNTIME)
@interface ReflectAnnotationdemo3 {
    //设置默认的值
    String  test() default "111";
    int [] test1() default {1,2};
    
}

@ReflectAnnotationdemo3(test="222",test1={4,5})
class AnnotationDemoTest3 {

}

 

java的注解基础入门

标签:oid   防止   void   code   extends   getc   ram   文件中   etc   

原文地址:https://www.cnblogs.com/gg128/p/9311301.html

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