注解的使用与规范

本文介绍了Java中的注解概念,包括其作用、格式(如@Target和@Retention),以及元注解的特性。并通过实例展示了如何使用注解和反射来获取和处理注解信息。
摘要由CSDN通过智能技术生成

注解

内置注解

自定义注解,元注解

什么是注解

​ Annotation是从JDK5.0开始引入的新技术.

​ Annotation的作用:

​ 不是程序本身,可以对程序作出解释.(这一点和注释(comment)没什么区别)

​ 可以被其他程序(比如:编译器等)读取。

​ Annotation的格式:
​ 注解是以“@注释名"在代码中存在的,还可以添加一些参数,例如:@SuppressWarnings(value=“unchecked”)

​ Annotation在哪里使用?

​ 可以附加在package,class, method, field 等上面,相当于给他们添加了额外的辅助信息,可以通过反射机制编程实现对这线元数据的访问

@Deprecated 不推荐使用,但可以使用

@Override 重写

@SuppressWarnings(“all”)镇压警告

什么是元注解

java.lang.annotation包中可以找到,java中有四个

//表示注解可以使用在哪些在哪些地方

@Target:用于描述注解的使用范围(即:被描述的注解可以用在什么地方)

//表示注解用在什么地方还有效果 runtime>source>class

@Retention:表示需要在说明级别保存该注解信息,用于描述注解的声明周记(SOURCE CLASS() RUNTIME)

//表示是否将注解生层在javaDoc中

@Document:说明该注解将被包含在javadoc中

//子类可以继承父类的注解

@Inherited:说明子类可以继承父类的注解

@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Test03 {
    //注解的参数 参数类型 + 参数名();
    String name()default "";
		int age()default 0;
		int id()default -1;//如果默认值为-1表示可能不存在或者找不到	
		String[] school(){"西部开源","清华大学"};
}

注解如果没有默认值 default"", 就需要赋值,否则会报错

@Test03(name = “Tom”,age=18,id=1;school={“家里蹲”,“大学”}) //注解没有顺序 有default 可以不用写那个了

细节

@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Test03 {
    //注解的参数 参数类型 + 参数名();
    String name()default "";
		String value(); 
}

如果就一个value 可不用谢= 直接写参数 @Test03(“Tom”)

通过反射获取注解 构造方法之类的略了 跟之前类反射一样

package com.annotation;

import java.lang.reflect.Method;

/**
 * @Author Tom
 * @Date 2023/12/27 20:21
 * @Description:
 */
@MisClass("TomClass")
public class Test {
    @MisMethod("TomMethod1")
    public static  void tt1(){}

    @MisMethod("TomMethod2")
    public static  void tt2(){}

    public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException {
        //运用反射 获取类的注解
        Class<?> aClass = Class.forName("com.annotation.Test");
        MisClass annotation = aClass.getAnnotation(MisClass.class);
        System.out.println(annotation.value());

        //运用反射 获取方法的注解
        Method tt1 = aClass.getMethod("tt1");
        MisMethod annotation1 = tt1.getAnnotation(MisMethod.class);
        System.out.println(annotation1.value());

    }
}
  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值