Java注解小结

一、基本概念

1、注解粗略的理解可以看成是标签。
2、Java注解是附加在代码中的一些元信息,用于编译和运行时进行解析和使用,起到说明、配置的功能。

二、定义与使用

1、注解通过 @interface 关键字进行定义。

public @interface TestAnnotation {
}

2、应用时直接在类、接口、方法的上方

@TestAnnotation
public class Test {
}

三、注解的属性

1、注解可以有>=0个成员变量
2、成员变量均为无参
3、调用成员变量直接,在注解括号内以value = “ “形式赋值,若只有一个成员变量则可直接在括号内赋值

@TestAnnotation(id=3,msg="hello annotation")

4、 成员变量类型只能为八种基本数据类型外加类、接口、注解和数组。
5、 可用default指定默认值

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface TestAnnotation {
    int id() default -1;
    String msg();
}

四、元注解

自定义注解时,可以使用元注解进行限制。
元标签有 @Retention、@Documented、@Target、@Inherited、@Repeatable 5 种。

1@Retention-保留期,取值如下:
1RetentionPolicy.SOURCE 注解只在源码阶段保留,在编译器进行编译时它将被丢弃忽视。
2RetentionPolicy.CLASS 注解只被保留到编译进行的时候,它并不会被加载到 JVM 中。
3RetentionPolicy.RUNTIME 注解可以保留到程序运行的时候,它会被加载进入到 JVM 中,所以在程序运行时可以获取到它们。
2@Documented -将注解中的元素包含到 Javadoc 中去。
3@Target -限定注解运用的场景(类、接口、方法、参数等),取值如下:
•	ElementType.ANNOTATION_TYPE 可以给一个注解进行注解
•	ElementType.CONSTRUCTOR 可以给构造方法进行注解
•	ElementType.FIELD 可以给属性进行注解
•	ElementType.LOCAL_VARIABLE 可以给局部变量进行注解
•	ElementType.METHOD 可以给方法进行注解
•	ElementType.PACKAGE 可以给一个包进行注解
•	ElementType.PARAMETER 可以给一个方法内的参数进行注解
•	ElementType.TYPE 可以给一个类型进行注解,比如类、接口、枚举
4@Inherited 子类就继承了超类的注解。
5@Repeatable  -重复,注解的注解可以多次使用

五、注解的运行原理

1、 注解通过反射获取。通过 Class 对象的isAnnotationPresent() 方法判断它是否应用了某个注解。
2、 然后通过 getAnnotation() 方法来获取 Annotation 对象,进而调用其中的属性。

六、Java内置的注解

1、@Deprecated
提示开发者正在调用一个过时的元素比如过时的方法、过时的类、过时的成员变量。
2、@Override
复写父类中被 @Override 修饰的方法
3、@SuppressWarnings
阻止警告的意思。调动@SuppressWarnings达到阻止或警告某个信息.

@SuppressWarnings("deprecation")
	public void test1(){
		Hero hero = new Hero();
		hero.say();
		hero.speak();
	}

4、@SafeVarargs
参数安全类型注解。它的目的是提醒开发者不要用参数做一些不安全的操作,它的存在会阻止编译器产生 unchecked 这样的警告。
6、@FunctionalInterface
函数式接口注解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值