java注解

一、注解的概念

        Java 注解(Annotation)是 JDK 5 引入的一种特殊语法元数据,它可以嵌入到源代码中,为代码提供额外信息。注解不会直接影响程序的执行逻辑,但可以被编译器、工具或运行时环境读取和使用,用于代码分析、生成文档、配置信息等。


二、注解的作用

        Java注解的核心作用是为代码提供元数据--即描述数据的数据。它不会直接影响程序的执行逻辑,但能为编译器、工具、框架或运行时环境提供额外的信息,从而实现各种功能拓展。具体作用可归纳为以下几类:

        1、编译期检查与约束。

                例如 @Override 注解:标记方法覆盖了父类的方法,编译器会校验该方法是否真的在父类中存在,若不存在则报错,防止拼写错误或逻辑错误。

        2、标记代码状态与控制警告。

                例如,标记过时元素:@Deprecated 注解用于标记类、方法或字段已过时,编译器会在开发者使用这些元素时发出警告,提示其可能被移除,建议替换为新实现;

        抑制编译器警告:@SuppressWarnings 注解可指定忽略特定类型的警告(如未使用变量、unchecked 类型转换等),避免无关警告干扰开发。

        3、简化配置与替代XML。

                在框架开发中,注解常用来替代繁琐的 XML 配置,使配置信息与代码紧耦合,更易维护。

        4、代码生成与增强。

                工具或框架可通过注解在编译期或运行期自动生成代码,减少重复劳动。

        5、运行时动态处理。

                结合反射机制,程序可在运行时读取注解信息,动态调整逻辑。

        6、文档生成。

                例如@Documented 元注解标记的注解会被包含在 Javadoc 中,增强代码文档的可读性;自定义注解 @Author 标记类的作者,生成文档时会显示该信息,便于团队协作。

        ******注解的就像是给代码贴上标签,这些标签被工具或框架解读后,可实现编译检查、简化配置、代码生成、运行时逻辑扩展等功能。它让 Java 代码更简洁、灵活,是现代 Java 框架(如 Spring、MyBatis)和开发工具(如 Lombok)的核心技术之一。


三、注解的使用

        1、注解的写法:注解时使用@interface关键字定义的,继承自Annotation接口。定义如下图所示:

        该注解中有两个属性,使用default关键字可以为该属性设置默认值,这样在使用该注解时,就可以不用为该属性传入值。

        

        2、注解的使用位置的声明:使用@Target注解,常见的取值有:

                ElementType.TYPE:表示可以应用于类、接口、枚举、注解;

                ElementType.METHOD:表示可以应用于方法;

                ElementType.FIELD:表示可以应用于字段;

                ElementType.CONSTRUCTOR:表示可以应用于构造函数;

                ElementType.LOCAL_VARIABLE:表示可以应用于局部变量。

        以上述注解为例,将其声明使用在类中:

        @Retention(RetentionPolicy.RUNTIME) :描述了该注解的生命周期

        

        声明User类,并使用注解Student:

        

        运行结果:

        


四、java中常见的内置注解

        1、@Override:标记方法覆盖了父类的方法,编译器会检查正确性

        2、@Deprecated:标记已过时的元素,使用时会产生警告

        3、@SuppressWarnings:抑制编译器警告

        4、@FunctionalInterface:标记函数式接口(JDK 8+)

        5、@FunctionalInterface:抑制可变参数的类型安全警告(JDK 7+)


五、元注解

        用处:用来修饰注解的注解

        1、@Target:指定注解可应用的元素类型(类、方法等);

        2、@Retention:指定注解的保留策略(源码、字节码、运行时),声明了被定义的注解的生命周期,例如在上个例子中,该属性的取值为@Retention(RetentionPolicy.RUNTIME):表示该注解在运行时仍然可用,运行时虚拟机会保留注解,可以通过反射读取。其它的取值还有RetentionPolicy.SOURCE、RetentionPolicy.ClASS。

        3、@Documented:标记注解会被包含在 Javadoc 中

        4、@Inherited:标记注解可被子类继承

        5、@Repeatable:允许注解在同一元素上重复使用(JDK 8+)


六、应用案例:使用注解自动生成SQL语句

        1、注解,作用于类上,用于声明目标类所对应的表名
        2、创建Student、User类,用于测试。

                Student类对应的表名为t_stus

                

                User类对应的表名为t_user

        ​​​​​​​        

        3、创建creatQuerySql类,生成sql语句

        运行结果:

        ​​​​​​​


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值