Java学习之【注解】

介绍

1、注解,或者叫做注释,英文单词是Annotation

2、注解Annotation是一种引用数据类型。编译之后也是生成字节码文件

3、语法格式

[修饰符列表] @interface 注解类型名{

}

4、注解怎么使用,用在什么地方?

(1)默认情况下,可放在任何位置

5、jdk5.0之后的功能

元注解

1、注解的注解称为【元注解】

2、常见的:Target,Retention

Target注解

1、用来标注“被标注的注解”可以出现在哪些位置上

Retention注解

1、用来标注“被标注的注解”最终保存到哪里

@Retention(RetentionPolicy.SOURCE):表示该注解只被保留在Java源文件中

@Retention(RetentionPolicy.CLASS):表示该注解被保留在class文件中

@Retention(RetentionPolicy.RUNTIME):表示该注解被保存在class文件中,并且可以被放射机制所读取

@override【标志性注解】

1、这个注解只能注解方法

2、这个注解是给编译器参考的,和运行阶段无关

3、凡是java中的方法带有这个注解的,编译器都会进行编译检查,如果这个方法不是重写父类的方法,编译器报错

@Deprecated注解

1、表示“被注解的类”已过时

注解中定义属性

1、注解内代码

public @interface MyAnotation {
    // 以下是MyAnotation的name属性
    // 看着像1个方法,但实际上我们称之为属性
    String name();

    String color();

    // 属性指定默认值
    int age() default 25;
}

2、使用自定义注解

public class Test {
    // @MyAnotation(属性名=属性值)
    // 指定name属性的值就好了
    // 如果一个注解当中有属性,一定要给属性值赋值(除非该属性有默认值)
    @MyAnotation(name = "zhangsan", color = "红色")
    public void doSome(){

    }
}

3、如果注解的一个属性是value,且只有一个属性,可以省略写,例:@MyAnotation("")【一般开发过程用不到,源代码中会出现】

4、注解中的属性可以是哪些类型?

(1)byte short int long float double boolean char String Class 枚举类型

(2)以及以上每一种类型的数组形式

public @interface MyAnotation {
    // 以下是MyAnotation的name属性
    // 看着像1个方法,但实际上我们称之为属性
    String[] name();
}

 

// 如果属性是数组,要加大括号,但是如果属性值只有一个,可以不加
@MyAnotation(name = {"zhangsan", "lisi"})
public void doSome(){

}
@MyAnotation(name = "zhangsan")
public void otherSome(){

}

通过反射获取注解对象属性的值

1、获取类上的注解

(1)待获取的类

@MyAnotation(name = "zhangsan", color = "红色")
public class ReflectTest {
    public void doSome(){

    }
}

(2) 代码实现

public static void main(String[] args) throws ClassNotFoundException {
    // 获取这个类
    Class c = Class.forName("Annotation.AnnotationTest01.ReflectTest");
    // 判断这个类上是否有注解
    if(c.isAnnotationPresent(MyAnotation.class)){
        // 获取该注解对象
        MyAnotation myAnotation = (MyAnotation) c.getAnnotation(MyAnotation.class);
        // 获取注解对象的属性值
        System.out.println(myAnotation.name());
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值