Java:为什么不试试神奇的拓展方法呢?

267 阅读3分钟
最近写了个java语法相关的库,为java支持了拓展函数和模板字符串。

Zircon (github路径为122006/Zircon)

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

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

企业微信截图_20231017162938.png

1. 拓展方法

zircon_show2.png

什么是拓展方法

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

拓展方法的必要性

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

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

比如java的集合类不好用,你可以设计个第三方库叫JAVA-Collection-plus,让引用其的项目都能使用自定义且强壮的方法。羡慕kotlin的集合类操作符么,你也可以实现一套然后分享给更多人使用

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

企业微信截图_20231017162938.png

使用方法及注意事项

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

2. 内插字符串

zircon_show.png

什么叫内插字符串?

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

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

如何使用内插字符串

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

常见问题回答:

  1. 为什么不用kotlin:

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

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

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

  3. 为什么不用lombok、manifold?

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

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

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

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

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

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