news 2026/2/7 11:08:26

写了这么多年 Java,这几个神仙技巧你真的用过吗?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
写了这么多年 Java,这几个神仙技巧你真的用过吗?

沉默是金,总会发光

大家好,我是沉默

如果你也是从
public static void main(String[] args)

System.out.println()
开始 Java 生涯的,那八成已经是“老 Java 人”了。

上班这些年,我们每天都在写业务代码:
CRUD、DTO、Service、Mapper……

代码能跑、需求能交,但也常忍不住吐槽一句:

Java 是不是有点笨?

写点事,咋这么多样板代码?

但真相是——
笨的不是 Java,而是我们还在用旧姿势写新 Java。

从 Java 8 到今天的 Java 21/25,Java 一直在进化:
语法在变、抽象在升级、写法在变轻。

下面这几个技巧,都是我在真实项目里反复用、越用越香的东西。
来看看,你用过几个。

-01-

1-2

① 用枚举(Enum)干点正事,而不是只当常量

很多人对枚举的理解还停在:

MALE, FEMALE

但实际上,枚举=自带多态的轻量策略类

比如:会员等级折扣。

与其写一堆if-else/switch,不如直接让逻辑“住”进枚举里。

public enum MemberType {REGULAR {@Overridepublic double applyDiscount(double price) {return price * 0.98;}},VIP {@Overridepublic double applyDiscount(double price) {return price * 0.9;}},PREMIUM {@Overridepublic double applyDiscount(double price) {return price * 0.8;}};public abstract double applyDiscount(double price);}

使用时非常干净:

double finalPrice = MemberType.VIP.applyDiscount(100);

没有 if
没有 switch
新增会员 ≈ 新增一个枚举值

这就是最符合开闭原则的业务写法之一

② 用 Record,砍掉 80% DTO 垃圾代码

以前写一个 DTO 是什么体验?

  • private final 字段

  • getter

  • equals

  • hashCode

  • toString

要么手写,要么全靠 Lombok。

现在?一句话。

public record UserProfile(String username, String email) {}

直接用:

UserProfile user = new UserProfile("dev_user", "user@example.com");System.out.println(user.username());System.out.println(user);

不可变
语义清晰
编译期生成完整方法

-02-

3-4

③ 给 ID 穿一层“类型外衣”,让编译器帮你查 Bug

如果你写过这种方法:

void process(Long userId, Long orderId)

那你一定也踩过这种坑:

process(orderId, userId); // 编译通过,逻辑反天了

解决方案很简单:
让 ID 拥有自己的类型。

public record UserId(long value) {}public record OrderId(long value) {}
void process(UserId userId, OrderId orderId) {}

现在如果你传反了?

直接编译失败

这就是:
把线上问题,提前杀死在 IDE 里。

④ Stream 清晰表达业务意图

需求:

从产品列表里
找到价格 > 500 的
返回名字

传统写法:循环 + if + list。

Stream 写法:

List<String> result = products.stream().filter(p -> p.price() > 500).map(Product::name).toList();

业务意图一眼可读
没有临时变量
天然支持并行与组合

你不再描述“怎么做”,而是在描述“要什么”。


-03-

5-7

⑤ 文本块(Text Block):终于能轻松写字符串了

以前在 Java 里写 JSON / SQL,像在拆炸弹:

"{\n" +" \"name\": \"Alice\",\n" +" \"age\": 30\n" +"}";

现在:

String json = """{"name": "Alice","age": 30}""";

所见即所得
没有转义符
可读性直接拉满

写 SQL、模板、JSON 的幸福感,瞬间 +100。

⑥ Optional :不是替代 null,而是表达“可能不存在”

Optional 的价值不在于“少写 if”,
而在于语义强约束

这个方法,可能没有值。

repo.findUserNameById(id).ifPresentOrElse(name -> System.out.println("找到用户:" + name),() -> System.out.println("用户不存在"));

强制调用方思考空值
链式表达业务分支
极大降低 NPE 风险

⑦ 新语法再香,前提是:你得能随时切 Java 版本

说句大实话:

  • 老系统:Java 8

  • 新项目:Java 17 / 21

  • 自己学习:Java 25

本地要不停切 JDK,真的会心态爆炸。

这时候,我强烈推荐一个工具:ServBay

它最大的价值就一件事:

帮你无痛管理多个 Java 版本

  • Java 8 / 11 / 17 / 21 并存

  • 项目级指定 JDK

  • 完全隔离,互不污染

你不再折腾环境变量,
而是专心写代码、玩新特性

-04-

总结

Java 一直未老
老的是我们写 Java 的方式

当你开始:

  • 用 Enum 代替 if

  • 用 Record 消灭 DTO

  • 用类型约束代替约定

  • 用 Stream 表达意图

你会发现:
Java,其实一直都挺优雅。


你还有哪些“私藏”的 Java 神仙写法?
欢迎在评论区一起交流...

-05-

粉丝福利

我这里创建一个程序员成长&副业交流群,

和一群志同道合的小伙伴,一起聚焦自身发展

可以聊:

技术成长与职业规划,分享路线图、面试经验和效率工具,

探讨多种副业变现路径,从写作课程到私活接单,

主题活动、打卡挑战和项目组队,让志同道合的伙伴互帮互助、共同进步。

如果你对这个特别的群,感兴趣的,

可以加一下,微信通过后会拉你入群,

但是任何人在群里打任何广告,都会被我T掉。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/4 19:29:14

HC32L130 MCU 片内 OPA(运算放大器)全解析与应用指南

目录 一、OPA 核心电气特性&#xff08;基础必知&#xff09; 二、OPA 硬件架构与管脚映射 1. 硬件框图&#xff08;核心逻辑&#xff09; 2. 管脚复用&#xff08;关键&#xff01;需查手册确认&#xff09; 三、OPA 软件配置通用流程&#xff08;基于标准库&#xff09;…

作者头像 李华
网站建设 2026/2/6 8:01:08

leetcode 763. Partition Labels 划分字母区间-耗时100%

Problem: 763. Partition Labels 划分字母区间 解题过程 耗时100%&#xff0c;首先统计每个字母的最小最大索引&#xff0c;然后合并所有字母的区间&#xff0c;可以合并的全部合并起来&#xff0c;不能合并的就放在那里&#xff0c;得到合并以后的区间&#xff0c;最后根据最小…

作者头像 李华
网站建设 2026/2/4 19:29:26

SC4D40120H-JSM 碳化硅肖特基二极管

在新能源革命与工业智能化的双重驱动下&#xff0c;碳化硅&#xff08;SiC&#xff09;功率器件凭借耐高温、低损耗、高频化的核心优势&#xff0c;成为电力电子领域升级换代的 “核心引擎”。深耕碳化硅赛道的杰盛微半导体&#xff0c;重磅推出SC4D40120H-JSM 碳化硅肖特基二极…

作者头像 李华
网站建设 2026/2/4 17:28:05

LobeChat能否对接木星卫星观测?冰下海洋生命可能性探讨

LobeChat 能否成为探索木星卫星生命的“数字科研伙伴”&#xff1f; 在人类对宇宙生命的追寻中&#xff0c;木星的冰封卫星——尤其是欧罗巴&#xff08;Europa&#xff09;和恩克拉多斯&#xff08;Enceladus&#xff09;——早已成为天体生物学的焦点。它们冰冷表面之下可能隐…

作者头像 李华
网站建设 2026/2/4 12:06:38

猫抓浏览器扩展:如何用侧边栏让视频资源嗅探变得如此简单

猫抓浏览器扩展&#xff1a;如何用侧边栏让视频资源嗅探变得如此简单 【免费下载链接】cat-catch 猫抓 chrome资源嗅探扩展 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 还在为网页视频下载而烦恼吗&#xff1f;每次看到喜欢的视频却不知道如何保存&am…

作者头像 李华