Java 注解 Annotation 笔记 + 作业

注解与注释

注释:

单行注释: //

多行: /* */

文档注释:/** */

作用: 传递额外信息, 给程序员看 , 不参与编译

 // 年龄大于18 小于25  
 // [18,25]
 // 18<= 年龄<=25
 void judgeAge(){
     //xxx
 }

什么是注解

Annotation其实是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理

注解的作用

通过使用Annotation,程序开发人员可以在不改变原有逻辑的情况下,在源文件嵌入一些补充信息

Annotation就像修饰符一样被使用,可用于修类、构造器、方法、成员变量、参数...,这些信息被存储在Annotation的“属性名=属性值”对中

注解 VS 注释

  • 相同点

    • 都是用来传递额外信息的

  • 不同点

    • 注解可以参与编译,注释不行

    • 注解有使用范围,注释没有(想咋写咋写)

    • 注释作为一种数据类型,跟class interface具有同等地位

自定义注解

语法

 权限修饰符 @interface 注解名{
     // 注解体
     属性类型 属性名();
     属性类型 属性名();
     属性类型 属性名();
     .....
 }
 ​
 举例
     public @interface MyAnno {
     // 定义注解体
     // 属性类型 属性名();
 }
 ​
 属性类型的范围:
 java基本数据类型
 String类型
 Class类型
 枚举类型
 注解类型
 以及以上类型的数组形式​

注意:

注解不能继承

package com._26_annotation._02_define;

/**
 * 属性类型的范围:
 * java基本数据类型
 * String类型
 * Class类型
 * 枚举类型
 * 注解类型
 * 以及以上类型的数组形式
 * @param null 
 * @return
 * @author zxcsjf
 * @since 2022/07/02 21:24:44
 */
public @interface MyAnno2 {
    // 属性类型 属性名();
    int age();
    double price();
    float salary();
    String name();
    String[] names();
    Class c();
    MyAnno3 ANNO_3();

}

@interface MyAnno3 {

}
// // 注解不能继承
// @interface MyAnno4 extends Object {
//
// }

注解的使用(重点)

对比类对象

  • 实例化对象 通过构造方法赋值

  • 如果没有赋值,有默认值

注解使用:

  • 实例化对象, 不是通过new,而是通过 属性名 = 属性值

 使用 的时候 给每个属性完成赋值
 @注解名(属性名1=value,属性名2=value,....)
     

注意:

  • 每个属性都要赋值

  • 如果有默认值,可以不用赋值(default)

  • 如果只有1个属性,并且名字叫value,可以简化赋值

  • 数组方式的赋值,使用{ }

  • 如果是引用类型,不能是null

package com._26_annotation._03_use;

/**
 * @author zxcsjf
 * @since 2022/07/02 21:26
 */
public class Demo {
    @MyAnno8(names = {"瑠夏", "水原千鹤"})
    @MyAnno7("女朋友")
    public static void main(String[] args) {

    }

    @MyAnno6
    @MyAnno5(name = "水原千鹤", age = 20)
    private static void func() {

    }
}

@interface MyAnno5 {
    // 定义属性
    String name();
    int age();
}

@interface MyAnno6 {
    // 定义属性 赋予默认值
    String name() default "一之濑千鹤";
}

@interface MyAnno7 {
    String value();
}

@interface MyAnno8 {
    String[] names();
}

注解处理器

获取注解信息,根据信息进行处理

结合反射去使用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值