[Zircon]在 Java 里流畅使用拓展方法语法

2023-12-21 14:14:26 +08:00
 122006
最近写了个 java 语法相关的库,为 java 支持了拓展函数和模板字符串。

Zircon ( github 路径为 122006/Zircon )

引入该库可以为原有 java 的项目基础上自由使用拓展函数和模板字符串的语法。

3 分钟上手,尽力减少学习成本,使用无感知。

1. 拓展方法

什么是拓展方法

能够向现有类型直接“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改现有类型。调用扩展方法的时候,与调用在类型中实际定义的方法相比没有明显的差异。

拓展方法的必要性

拓展方法没有必要性。拓展方法只是为了能让你更简单地完成你的代码,专注于业务逻辑而不是各种工具类的记忆中。

在任何场景,你都可以用工具类的静态方法以替换拓展方法的实现,但是拓展方法可以让你写得更嗨以及代码更加简洁。

比如 java 的集合类不好用,你可以设计个第三方库叫 JAVA-Collection-plus ,让引用其的项目都能使用自定义且强壮的方法

欢迎使用Zircon,希望能给你带来更好的 java 代码体验。

使用方法及注意事项

在项目任意位置中,声明一个包含注解@ExMethod的方法。后续你可以在该项目、及引入该项目的项目的任何地方中使用这个方法。

2. 内插字符串

什么叫内插字符串?

字符串插值功能构建在复合格式设置功能的基础之上,提供更具有可读性、更方便的语法,用于将表达式结果包括到结果字符串。

对某个表达式执行计算后,其结果立即转换为一个字符串并包含到结果字符串中

如何使用内插字符串

若要将字符串标识为内插字符串,可在该字符串前面加上 $f 符号。 可嵌入任何会在内插字符串中返回值的有效 JAVA 表达式。

常见问题回答:

  1. 为什么不用 kotlin:

    一个项目切 kotlin 麻烦,但是这个库引用之后就可以直接使用,几乎 0 改造成本

  2. 你在生产环境上用么?

    该库都是编译时织入,对运行没有任何影响。(个人项目用得爽得了)

  3. 为什么不用 lombok 、manifold?

    lombok 的拓展方法用起来很麻烦,实用性很低。manifold 的拓展方法和模板字符串方面有部分缺陷,功能上也更局限,而且太重了。

  4. 公司都不用 lombok ,为啥要用你这个

    说得对,但是个人项目真的写得很爽~ :)

  5. java21 已经支持了模板字符串

    众所众知中国互联网的 java 版本只有 8 。本库可以给各个 java 版本增加模板字符串功能

github 传送门: https://github.com/122006/Zircon 欢迎各位大佬指教(走过路过给个 star 呗~

790 次点击
所在节点    分享创造
1 条回复
122006
2023-12-21 14:50:02 +08:00
ExMethodUtil
项目 ExMethodUtil 封装了常见的 java 工具方法,可用于体验或者测试拓展方法功能
项目地址: https://github.com/122006/ExMethodUtil
引入:implementation 'com.github.122006:ExMethodUtil:1.0.5'

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1002265

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX