Java注解(闻过)

注解就如同标签一样。

1、注解的定义

//注解的定义,相当于创建了一个名字为Frozen的标签
    public @interface Frozen{}

2、注解的应用

上面我们定义了一个注解标签
下面我们将标签贴在方法上

@Frozen
public static void getSomthing(){}

将标签贴在类上

@Frozen
public class UseZhujie {

}

3、注解的工作原理

上面我们创建了注解,并把他贴在了某处,但是这货是怎么工作的呢?

首先呢,我们必须先了解元注解。
所谓元注解,在笔者看来就是注解的基本组成部分,元注解组成注解,是注解里的基本单位。

【5种元注解】
A、@Retention
这个注解就是确定注解的存活时间的,也就是常说的生命周期。

RetentionPolicy.SOURCE
注解只在源码阶段保留,在编译器进行编译时它将被丢弃忽视。
RetentionPolicy.CLASS
注解只被保留到编译进行的时候,它并不会被加载到 JVM 中。
RetentionPolicy.RUNTIME
注解可以保留到程序运行的时候,它会被加载进入到 JVM 中,所以在程序运行时可以获取到它们。

B、@ Documented
它会被 javadoc 之类的工具处理, 所以注解类型信息也会被包括在生成的文档中,是一个标记注解,没有成员。
C、@ Target
限制注解的应用场景,就是规定当前的注解可以贴在什么地方
ElementType.ANNOTATION_TYPE
可以给一个注解进行注解
ElementType.CONSTRUCTOR
可以给构造方法进行注解
ElementType.FIELD
可以给属性进行注解
ElementType.LOCAL_VARIABLE
可以给局部变量进行注解
ElementType.METHOD
可以给方法进行注解
ElementType.PACKAGE
可以给一个包进行注解
ElementType.PARAMETER
可以给一个方法内的参数进行注解
ElementType.TYPE
可以给一个类型进行注解,比如类、接口、枚举
D、@ Inherited
继承,也就是说。
ClassA的注解被@Inherited修饰之后,假设ClassB extends ClassA 那么ClassB也具有与ClassA被修饰过的一样的注解了。
E、@ Repeatable
Java1.8新特性

4、注解的属性

public @interface Frozen{
    String frozen();
    int redant();
}

//应用刚创建的注解
@Frozen(frozen = "hoyl", redant = 0)
public static void getSomthing(){}

可以添加属性默认值

public @interface Frozen{
    /*  String frozen();
        int redant();*/
        //可以设置默认值
        String frozen() default "Frozen";
        int redant() default 100;
    }

这样被贴标签的就不用了赋值了

//@Frozen(frozen = "hoyl", redant = 0)
@Frozen
public static void getSomthing(){}

5、Java预置注解

这些呢,大多数是编译器自动感知。然后报警告,提示自动添加的。
@ Deprecated
这是告诉开发者,调用的东西过时了

Java注解(闻过)
@ Override
想重写父类的方法
@ SuppressWarnings
一些警告
@ SafeVarargs
阻止编译器产生 unchecked警告
@ FunctionalInterface
1.8新特性

6、注解有啥用?

1、生成文档。
2、跟踪代码依赖性,实现替代配置文件XML功能。
3、在编译时进行格式检查。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值