注解

package cn.JAVandReflection.AnnotationTest;

import java.lang.annotation.*;

/**
 * 介绍什么是注解,以及自定义注解:
 * Annotation:
 *      作用:方便阅读程序、 对程序的检查和约束、 可以被其他程序读取(如用反射操作注解,ORM内部的一些原理等下一期讲解)作用对象:
 *      注解可以作用在包、类、方法、属性等上面
 * 常见注解:
 *      @Override
 *      @Deprecated  <:不赞成、反对>   不推荐使用某个方法等时使用
 *      @FunctionalInterface  函数式接口使用
 * 本质:  接口
 * 理解概念:
 *      元注解: 用于描述注解的注解 单词: meta-annotation
 * 常见的元注解:
 * @Target : 用于描述注解的作用范围,即被描述的注解可以作用在什么地方,是类、方法亦或是变量
 * @Retention: <:保留>表示什么级别保存该注解信息,用于描述注解的生命周期  三个周期: SOURCE < CLASS < RUNTIME
 * 注意: 自定义的一般都是 RUNTIME
 * @Document: 说明该注解是否被博阿寒在javadoc中
 * @Inherited: <:继承的>表明子类可以继承父类的注解
 * 自定义注解: 用下面代码简单理解
 */
// 下面自定义一个注解
@Target(value = {ElementType.FIELD, ElementType.TYPE})
/**
 * ElementType 这个枚举类型里面限制了我们要使用的字段:但是常用的有以下几个
 * .TYPE 表示作用域是类
 * .FIELD 表示作用域是变量
 * .METHOD 表示作用域是方法
 * 可以同时设置作用多个作用域
 */
@Retention(value = RetentionPolicy.RUNTIME)
/*
RetentionPlicy 同样枚举类型  至于三个 SOURCE CLASS RUNTIME
 */
@Documented // 表示转成文档时候保留
@Inherited   // 表示子类可以继承该注解
@interface myAnnocation {     // 这个名就是注解名
    // 里面写注解描述参数即可,他们是参数,但是样子像方法
    String name();
    String id();
    int age() default 18; // 可以这样的形式设置一个默认值
    // 以下这个仅演示可行性
    char[] a() default {'d', 'b'};
}

// 通过上面方式简单定义了一个注解  注解的基本使用如下
/*
注意点: 定义过的注解参数而且没有设置默认值的必须像@Retention(value = RetentionPolicy.RUNTIME)
写上,但是 @Retention(RetentionPolicy.RUNTIME) 你们可能看见遮掩的形式:
因为, 在注解参数只有一个,且其名字为value时候,可以省略写,下面是上面的省略写法
 */
// 简单使用  这样就可以注解啦 ,当然 我们的作用域还有变量,我们也可以在变量上使用
@myAnnocation(name="WhatAnnotation Class", id="001")
public class WhatAnnotation {
    // 这样是可行
    @myAnnocation(name="name field", id="001-1")
    String name ;
    public WhatAnnotation() {
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值