尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
把注解当“便利贴”——运行时自动识别字段
一、这次又遇到了什么麻烦每个订单对象有几十个字段程序员每次写导出代码都要手动列出“商品名对应A列、价格对应B列”太容易出错而且以后字段一改到处都要改。我们能不能在订单类的字段上直接写好“这是哪一列、什么标题”让程序自己去读这些配置这时候就该注解Annotation出场了。二、注解到底是什么你可以把注解理解成贴在代码上的便利贴。它对程序的运行逻辑没有直接影响但编译器、框架、或者我们自己写的工具可以去读这些“便利贴”上的信息然后决定怎么做。Java内置了三个最常用的便利贴我们项目里其实已经用了// 1. Override —— 告诉编译器“我真的是在重写你帮我检查一下方法签名对不对” Override public void export(ListOrder orders, String filePath) { ... } // 2. Deprecated —— 告诉调用者“这个方法过时了别用了” Deprecated public void oldExportMethod() { ... } // 3. SuppressWarnings —— 告诉编译器“我知道这里有问题别给我报警告了” SuppressWarnings(unchecked) public void someMethod() { ... }现在我们要自己定制一个便利贴让导出工具能读懂。三、第一步自定义一个注解 ExcelColumn这个注解就用来标记字段对应的Excel列标题。import java.lang.annotation.*; // Target 指定这个注解可以贴在哪些地方这里只贴在字段上 Target(ElementType.FIELD) // Retention 指定注解保留到什么时候RUNTIME 表示程序运行时还能通过反射读到它 Retention(RetentionPolicy.RUNTIME) public interface ExcelColumn { // 列标题默认值空字符串 String title() default ; // 列序号从0开始默认-1表示按字段顺序 int order() default -1; }Target决定便利贴能贴哪儿方法、字段、类等。Retention决定便利贴存活多久RUNTIME是存活到运行时这样我们才能用反射读。四、第二步把注解贴在订单类的字段上import java.math.BigDecimal; import java.util.Date; public class Order { ExcelColumn(title 订单编号, order 0) private String orderId; ExcelColumn(title 商品名称, order 1) private String productName; ExcelColumn(title 单价, order 2) private BigDecimal price; ExcelColumn(title 数量, order 3) private int quantity; ExcelColumn(title 下单时间, order 4) private Date createTime; // 有些字段不想导出干脆就不贴注解 private String internalNote; // 构造方法、getter/setter 略... }现在任何一个看这个类的人都能直接知道导出的列标题和顺序。五、第三步让导出器读注解自动生成Excel我们改造一下 ExcelOrderExporter让它利用反射读取注解信息不再需要硬编码列名。import java.lang.reflect.Field; import java.util.*; public class ExcelOrderExporter extends OrderExporter { Override public void export(ListOrder orders, String filePath) { // 1. 反射获取Order类的所有字段 Field[] fields Order.class.getDeclaredFields(); // 2. 找出所有贴了ExcelColumn的字段并按order排序 ListField excelFields new ArrayList(); for (Field field : fields) { if (field.isAnnotationPresent(ExcelColumn.class)) { excelFields.add(field); } } excelFields.sort(Comparator.comparingInt(f - { int o f.getAnnotation(ExcelColumn.class).order(); return o -1 ? Integer.MAX_VALUE : o; })); // 3. 模拟生成Excel真实项目用POI库 System.out.println(----- 导出Excel表头 -----); for (Field field : excelFields) { ExcelColumn col field.getAnnotation(ExcelColumn.class); System.out.print(col.title() \t); } System.out.println(); // 4. 遍历订单数据输出每一行 for (Order order : orders) { for (Field field : excelFields) { field.setAccessible(true); // 因为字段是private的 try { Object value field.get(order); System.out.print(value \t); } catch (IllegalAccessException e) { e.printStackTrace(); } } System.out.println(); } System.out.println(Excel已保存到: filePath); } }六、软件运行时实现了什么功能当用户点击“导出Excel”时程序会读取 Order 类上所有带了 ExcelColumn 的字段。按 order 排列顺序。用 title 做表头。自动提取每个订单对象中对应字段的值填入表格。效果哪天订单表多了个字段开发人员只要在那个字段上加一个注解导出的Excel就会自动多一列不用去修改导出器的核心代码。这就是“便利贴”带来的灵活性和低耦合。
RELATED

相关推荐

AI翻译模型能力天花板在哪?(27个真实翻车案例+128道分级测试题全公开)

AI翻译模型能力天花板在哪?(27个真实翻车案例+128道分级测试题全公开)

更多请点击: https://intelliparadigm.com 第一章:AI翻译模型能力天花板在哪? AI翻译模型的性能边界并非由单一指标定义,而是受制于语言学本质、训练数据质量、推理架构约束与跨文化语义对齐能力的多重制约。当前主流大语言模型驱…

📅 2026/9/23 7:46:42
WASM 在企业级应用中的落地:哪些场景已经成熟,哪些还在探索

WASM 在企业级应用中的落地:哪些场景已经成熟,哪些还在探索

WASM 在企业级应用中的落地:哪些场景已经成熟,哪些还在探索 一、一年前我在内部推广 WASM,被质疑了"为什么不用容器" 去年我在公司内部提了一个方案:用 WASM 替代 Docker 运行策略引擎的插件。技术主管在评审会上的第一…

📅 2026/9/23 15:46:15
AI自动化通知系统压测实录(QPS 12万+、送达率99.98%):金融级推送架构首次公开

AI自动化通知系统压测实录(QPS 12万+、送达率99.98%):金融级推送架构首次公开

更多请点击: https://kaifayun.com 第一章:AI自动化通知推送 AI自动化通知推送正成为现代运维与用户触达体系的核心能力。它通过融合自然语言处理、行为预测模型与多通道通信网关,实现从事件识别到精准送达的端到端闭环。相比传统规则引擎驱…

📅 2026/9/26 2:14:11
MORE NEWS

更多资讯

📰

松岭哪里考电工证怎么考 电工证全国通用怎么拿?

松岭哪里考电工证怎么考 电工证全国通用怎么拿? 工地太忙根本没时间复习考试,你是项目现场管理员,每天忙得连轴转,但你知道吗?在松岭哪里考电工证,这事儿直接关系到你能不能继续干下去,还可能影响整个项目的安全生产责任。…

📰

安装工高薪需电工证在哪考?工地太忙根本没时间复习考试

安装工高薪需电工证在哪考?工地太忙根本没时间复习考试 工地太忙根本没时间复习考试,这是我最近接电话时听到最多的一句话。作为刚来许昌打工的安装工小李,他每天早出晚归,干完活儿还得赶回宿舍,连吃饭时间都紧张。他告诉我,听说现在干安装得有电工证,…

📰

吴川中级电工证怎么考 官方回应报名流程全公开

吴川中级电工证怎么考 官方回应报名流程全公开 不知道去哪报名怕被中介坑?别急,官方回应来了!最近很多吴川的朋友在问【吴川中级电工证怎么考】,其实流程并不复杂,关键是找对地方、走对流程。下面我就来给你拆解一下,从报名到拿证的每一步怎么走,还帮…

📰

青阳电工证查找在哪考,别再被中介坑了

青阳电工证查找在哪考,别再被中介坑了 你是不是也遇到过这种情况,听说要考电工证,一查资料就发现网上五花八门的报名渠道,不知道该信谁,怕被中介坑?尤其是“ 青阳电工证查找在哪考…

📰

低压电工证怎么办理?上岗必须要这个证吗

低压电工证怎么办理?实操考试心里没底怕挂科?在这考最稳妥 实操考试心里没底怕挂科?低压电工证怎么办理?这是很多准备考电工证的小伙伴最关心的问题。尤其在像许昌这样的建筑工地,没有低压电工证,别说上岗了,连进工地都不行。 在哪考…

📰

低压电工证电箱接线图保姆级教程:怕考不过白交培训费?看完这篇保你一次过

低压电工证电箱接线图保姆级教程:怕考不过白交培训费?看完这篇保你一次过 怕考不过白交培训费?别急,今天给你一套 低压电工证电箱接线图保姆级教程 ,从零基础到拿证全流程,手把手教你搞定低压电工证,彻底避开考试陷阱。…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬