[Zircon]在 Java 里流畅使用拓展方法语法 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
122006
V2EX    分享创造

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

  •  
  •   122006 2023-12-21 14:14:26 +08:00 1368 次点击
    这是一个创建于 726 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近写了个 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 呗~

    2 条回复    2025-04-26 00:48:09 +08:00
    122006
        1
    122006  
    OP
       2023-12-21 14:50:02 +08:00
    ExMethodUtil
    项目 ExMethodUtil 封装了常见的 java 工具方法,可用于体验或者测试拓展方法功能
    项目地址: https://github.com/122006/ExMethodUtil
    引入:implementation 'com.github.122006:ExMethodUtil:1.0.5'
    ywcjxf1515
        2
    ywcjxf1515  
       235 天前 via Android
    话说你 github 源码能改成用 maven 配置的吗
    还有其中的 idea 插件能不能支持 java8
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4913 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 01:14 PVG 09:14 LAX 17:14 JFK 20:14
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86