Java基础--注解

Java注解全面解析:从基础到进阶 除了使用Java内置注解和元注解,我们还可以根据实际需求自定义注解。自定义注解需要使用元注解来定义其特性。上述代码定义了一个名为的注解,它有一个成员变量value,并且默认值为空字符串。在类中,myMethod方法使用了自定义的注解,并为其value成员变量赋值。Java注解为我们的代码带来了极大的便利和扩展性。通过内置注解、元注解以及自定义注解,我们可以在不同阶段为程序元素添加丰富的元数据,并在编译期、运行时进行相应的处理。合理运用注解,能够使代码更加清晰、可维护,提升开发效率。 阅读详情

一直都想了解一下注解,下面是自己学到的一点东西。

1.分类

  1. 内置注解(@Override,@Deprecated,@SuppressWarnings),源码上很清楚的备注了各自的作用。
  2. 元注解(@Retention,@Target...),还是看源码备注。
  3. 自定义注解 。

2.应用

1.注解(annotation)作为注释用(comment),很明显这不是主要作用。

2.被其他程序调用(如编译器)。

3.实例

package com.test.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Table {

    String value();
}

package com.test.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Column {

    String colName();

    String type();

    int length();
    
    // 不传值取默认值
    boolean isNull() default true;
}

package com.test.annotation;

@Table("student")
public class Student {

    @Column(colName = "id", type = "bigint", length = 20, isNull = true)
    private Long id;

    @Column(colName = "name", type = "varchar", length = 20, isNull = false)
    private String name;

    @Column(colName = "age", type = "int", length = 3)
    private int age;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

import com.test.annotation.Column;
import com.test.annotation.Table;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;

public class Main {

    public static void main(String[] args) {
        try {
            String sql;

            Class clazz = Class.forName("com.test.annotation.Student");
            // 读取类的注解
            for (Annotation annotation : clazz.getAnnotations()) {
                System.out.println(annotation);
            }

            // 获取类的指定注解
            Table table = (Table) clazz.getAnnotation(Table.class);
            //System.out.println(table.value());
            sql = "create table " + table.value() + " ( " +"\n";

            // 获取类的属性的注解
            Field id = clazz.getDeclaredField("id");
            Column idAnnotation = id.getAnnotation(Column.class);
            System.out.println(idAnnotation.colName());

            for (Field field : clazz.getDeclaredFields()) {
                Column col = field.getAnnotation(Column.class);
                sql = sql + "   " + col.colName() + " " + col.type() + "(" + col.length() +") " + (col.isNull() ? "default null" : "not null") +",\n";
            }

            sql.lastIndexOf(',');
            sql = sql.substring(0, sql.length() - 2) + "\n);";
            System.out.println(sql);

        } catch (Exception e) {

        }
    }
}

/*运行结果:
@com.test.annotation.Table(value=student)
id
create table student (
id bigint(20) default null,
name varchar(20) not null,
age int(3) default null
);*/

通过反射读取Student类上的@Table和@Column注解生成SQL语句。

掌握Java通用注解API:从基础到实践 Java 提供了一系列预定义的注解,它们是语言的一部分,能够在编译时提供信息给编译器,或在运行时被框架识别和处理。这些内置注解包括但不限于@Override, 和。@Override用于指示方法重写了超类中的方法。当方法没有正确重写时,Java 编译器将报错。这有助于防止因拼写错误或其他错误而导致的方法覆盖不正确。在上面的例子中,@Override通知编译器Car类的start()方法意图覆盖Vehicle类的start()方法。如果start()方法在。 阅读详情

相关推荐

c# DataGridView Columns 增加ColumnType选择

构建DataGridView的定制NumericUpDown单元格和表格列的类型,如何在DataGridView Columns ColumnType中显示出来供用户选择

通俗易懂的通用Mapper教程(含配套资料)

本教程为授权出品通用Mapper是一款非常好用的MyBatis插件,它能够帮助我们自动生成常用增删改查操作的SQL语句,克服MyBatis开发过程中需要大量编写SQL语句的弊端。由于通用Mapper是根据实体类的属性自动生成对应的SQL语句,所以可以说通用Mapper插件是对MyBatis在ORM方面不足的重要补充。本套教程基于通用Mapper新版4.0.0,在详细讲解常规增删改查操作、QBC查询之外,还包括逆向工程MBG工具、二级缓存@CacheNamespace注解、TypeHandler类型处理器、枚举类型映射方式等知识点。通过具体例子详细讲解了如何为自己的特定需求对通用Mapper原有功能进行扩展。相信通过本教程的学习足以借助通用Mapper应对绝大部分应用场景下的开发要求。

Windows11+VS2022驱动开发环境搭建实战:从零到编译(避坑指南)

本文详细介绍了在Windows11系统下使用VS2022搭建驱动开发环境的完整流程,包括版本匹配、工具安装、环境配置及常见问题解决。重点强调了WDK与系统版本的严格匹配,以及VS2022中驱动开发组件的正确配置方法,帮助开发者高效避坑并成功编译第一个驱动程序。

weixin_29251337的博客 527

五、类型处理器(TypeHandler)

简单类型和复杂类型 基本数据类型:byte short int long double float char boolean 引用数据类型:String、类、接口、数组、枚举…… 简单类型:只有一个值的类型 复杂类型:有多个值的类型 注:通用mapper默认情况下会忽略实体类的复杂类型与数据库表的字段映射;因此需要指定具体 类型的处理器进行字段映射。 编写自定义处理器 自定义处理类继承BaseTypeHandler抽象类 public class MyTypeHand...

zl979899的博客 729

ClickHouse分布式表原理:大数据分片存储与查询

我是一名资深大数据工程师,专注于ClickHouse优化和分布式架构设计。拥有5年以上大数据开发经验,曾为多家电商、金融公司提供ClickHouse解决方案。欢迎关注我的博客(),一起探讨大数据技术!留言互动:你在使用ClickHouse分布式表时遇到过什么问题?欢迎在评论区分享,我会一一解答!

AI大模型应用之禅 959

Win11专业版破解RDP限制:实现多用户远程桌面协同办公

本文详细介绍了如何在Windows 11专业版上破解RDP限制,实现多用户远程桌面协同办公。通过使用RDPWrap工具,用户可以绕过微软的授权限制,允许多个用户同时登录同一台电脑,提高硬件利用率和团队协作效率。文章包含详细的安装配置步骤、性能优化技巧及常见问题解决方案,适用于需要远程协作的办公场景。

weixin_33806300的博客 466

SpringBoot集成通用Mapper和分页插件PageHelper(三)

                                                                                                               ...

华小灼 1504

python中使用squarify包可视化treemap图:为treemap图添加标题并自定义标题的字体大小、自定义设置treemap中标签字体的大小、添加数值数值标签、自定义设置边框的色彩

python中使用squarify包可视化treemap图:treemap将分层数据显示为一组嵌套矩形自定义设置每一个数据格的颜色、添加数值数值标签、自定义设置边框的色彩、自定义设置边框线条的粗细、为treemap图添加标题并自定义标题的字体大小、自定义设置treemap中标签字体的大小

data+scenario+science+insight 1061

通用mapper枚举字段和typehandler

枚举类: public enum StateEnum { disabled, enabled, } MyBatis 提供的枚举处理器有 EnumOrdinalTypeHandler(数据库存的是枚举索引值,查询的时候根据索引值获取相对于的值)和EnumTypeHandler(数据库存的是枚举的值) 这里打算用 MyBatis 提供的 EnumOrdinalTypeHandl...

lyf_ldh的博客 2488

全15万字丨PyTorch 深度学习实践、基础知识体系全集;忘记时,请时常回顾。

本篇博客介绍的知识是——深度学习之PyThon框架基础。这是深度学习/神经网络的基础,多次回顾,会有不一样的感受。书读百遍,其义自见。

追光者♂:记录、分享、总结、提升,现象级专栏《Python从入门到人工智能》作者,无惧黑暗,坚信曙光 5787

【即插即用模块】Transformer篇 | ICCV 2025 | MALA :注意力分布神似Softmax,告别线性注意力性能短板!

MALA(Magnitude-Aware Linear Attention)是一种改进的线性注意力机制,通过引入缩放因子和偏移项,解决了传统线性注意力忽视查询幅度的问题,使其分布更接近Softmax Attention。该模块具有线性复杂度(O(n)),结合RoPE和LEPE编码实现全局-局部位置信息混合,通过z值调制平衡信息权重。实验表明MALA在轻量级视觉任务中能有效平衡效率与精度,注意力可视化显示其分布与Softmax Attention高度相似。代码提供完整的RoPE位置编码和线性注意力

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 1106

Java基础-注解

注解是 Java 中一种强大的元数据机制,它通过 “标记 + 解析” 的方式,为代码提供灵活的扩展能力。理解注解的核心是:它不直接参与业务逻辑,而是作为 “桥梁” 连接代码与工具 / 框架,让外部系统根据注解信息做出相应处理。在实际开发中,合理使用注解(结合反射或处理器)能显著提升代码的简洁性和可扩展性。

weixin_43578751的博客 673

基于Simulink的电机轴电压与轴电流抑制仿真

本文带你完成了电机轴电压与轴电流抑制的Simulink仿真,实现了:✅ 揭示了共模电压 → 寄生电容 → 轴电压 → 轴承电蚀的完整链路✅ 搭建了含寄生参数的高频电机等效模型共模电压最小化PWM(源头抑制)dv/dt滤波器(路径阻断)轴接地(终端泄放) ✅ 通过仿真验证了轴电压从68 V降至<3 V的显著效果 ✅ 为高可靠性电机系统提供低成本、高效益的轴承保护方案。

amy_mhd的博客 163

java基础——枚举注解

java基础 笔记的都是需要背诵的零散知识点,以顺序的方式组织 文章目录java基础1.enum枚举(enumerate)2.注解3.jdk的元Annotation(元注解,了解) 1.enum枚举(enumerate) (1)枚举是一组常量的集合 (2)枚举属于一种特殊的类,里面只包含一组有限的特定对象 (3)枚举的两种实现方式: 自定义类实现枚举 使用enum关键字实现枚举 (4)自定义类实现枚举: 不需要提供setXxx方法,因为枚举对象值通常为只读. 对枚举对象/属性使用final

上邪的博客 1441

YOLOv11改进 | 网络结构代码逐行解析(一) | 项目目录构造分析

Hello,大家好这次给大家带来的不是改进,是整个YOLOv11项目的分析整个系列大概会更新5-7篇左右的文章从项目的目录到每一个功能代码的都会进行详细的讲解,下面开始进行YOLOv11逐行解析的第一篇——项目目录构造分析开头之前顺便给大家推荐一下我的专栏,本专栏更新上百余篇YOLOv11改进机制手把手教你添加到网络结构中,同时针对拿到模型不知道如何修改,不知道如何发表论文的读者进行针对性的文章介绍,本专栏质量分平均分96分,内容质量完全有所保证。

Snu77的博客 1万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Java 基础 - 注解

定义自己的注解}使用注解@Override}}}}用反射接口获取注解信息try {// 获取所有methods// 遍历// 方法上是否有MyMethodAnnotation注解try {// 获取并遍历方法上的所有注解}// 获取MyMethodAnnotation对象信息}}}}}激动的心,颤抖的手借用客官你们发财的小手,给个鼓励吧​。

Liarboy 2356

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Java 基础 - 注解机制详解

当我们理解了内置注解, 元注解和获取注解的反射接口后,我们便可以开始自定义注解了。定义自己的注解Retention;Target;使用注解} }} }} }Annotation;

珍惜当下 1272

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Java基础——注解(Annotation)基础

Java注解(Annotation)又称Java标注,是 JDK5.0 引入的一种注释机制。注解是元数据的一种形式,提供有关于程序但不属于程序本身的数据。注解对它们注解的代码的操作没有直接影响。元数据:描述数据的数据。

liang-jy的博客 884

Java注解基础

Java 注解是代码中的元数据标签,通过 @interface 关键字定义,用于为程序元素(类、方法、字段等)添加描述性信息

不如打代码 563

Java基础-注解机制详解

Java注解机制的一点总结

令狐_JackieHao的博客 1217

java注解基础

java注解基础 java中可能你经常能在ide中看到@Override,但是很少关心它是什么?而在使用spring框架时能使用注解,会让spring注入变得简洁。 注解的概念:java提供了一种原程序中的元素关联任何信息和任何元数据的途径和方法。 java常见注解 Jdk自带常用注解 @Override 重写 @Deprecated 弃用(调用会产生的结果) @SuppressWar...

qq_40062884的博客 345

《重学Java系列》之 注解基础

不诗意的女程序媛不是好厨师~ 转载请注明出处,From李诗雨—[https://blog.youkuaiyun.com/cjm2484836553/article/details/104432728] 《重学Java系列之---注解基础》1.什么是注解?2.自定义注解及使用3.元注解3.1元注解的理解3.2 常见的5种元注解。@Retention --- 指定了注解的存活时间@Target ---- 指定...

cjm2484836553的博客 355

Java笔记——基础注解

java.lang包下的基础注解 @Override // 方法覆盖 @Deprecated // 已过时 @SuppressWarnings("unchecked") // 抑制警告 @SafeVarargs // 抑制堆污染警告 @FunctionalInterface // 函数式接口 java.lang.annotation包下的元注解 @Retention(RetentionPolicy.RUNTIME) // 注解的保留期,默认是CLASS @Target(ElementType.

xnktyu的专栏 170

java注解基础,模拟Junit注解

11、注解 1 、注解基础 1.1、注解的基本语法 [ public ] @interface 注解名{ } 其public可以省略 注解里的成员属性语法: 【public】 属性类型 属性名称() @interface Book{ public String Book(); public String[] author(); public int price() default 100; } 1.2、注解的特殊属性名称value value属性,如果只有一个value属性的情况下

qq_49278026的博客 769

【Java 基础篇】Java 注解详解

注解是一种标记在 Java 类、方法、字段和其他程序元素上的特殊标签。这些标签提供了有关元素的额外信息,通常以注解的方式存储在 Java 源代码中。注解通常不影响程序的运行,但可以在编译时、运行时或通过工具进行处理。Java 注解以符号开头,后跟注解的名称,如@Override等。注解可以有元素,元素以键值对的形式存储信息。// 类的内容在上面的示例中,@Author是一个自定义注解,具有两个元素name和date,它们存储了有关类MyClass的信息。

繁依Fanyi的博客 1819
上一篇: Spring Boot 会话管理
下一篇: SpringCloud--整体流程(好文)
参与者
博客等级 码龄9年 1粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值