一种 99%程序员都没用过的 Java 语法

2021-02-05 14:54:26 +08:00
 122006
rt 。

其实就是内插 /模板字符串

很多语言都有的这个功能,而作为业界一大老牌主流语言,JAVA 程序员却只能痛苦地用密密麻麻的加号拼接,丑陋得很
当然,也可以用 String.format,但是大多数情况并不需要特殊格式化,动辄七八个十多个参数,一个个对应起来头都在痛。

更何况,“我可以不用,但不能没有!”

如果我们可以这么写,岂不是美滋滋?

String add = "test2";

assertEquals($("test1 $add"), "test1 test2");

assertEquals($("test1 ${\"Test,mode\".substring(0,6)}${1+2}"), "test1 Test,m3");

---------------------------------------------------------------------------------------------------------------------------------
现在,Java 开发者有了一个新的选择:

Zircon ( https://github.com/122006/Zircon

Zircon 可以让开发者在已有的 java 项目中使用内插字符串。
1 分钟快速配置后,可以和 Groovy 、kotlin 等语言一样快乐地使用美元符进行优雅的字符串拼接,并获得 idea 语法检查及联想功能

使用方法:
使用$()方法包裹字符串
在字符串中,使用${code}以执行 java 代码并插入至原字符串,或使用$变量名以插入至原字符串

优势:
支持 idea 语法检查及方法联想依赖查询等功能(和原生代码完全一致)
无任何依赖库
不需要修改任何原有项目代码,接入即用
支持 Gradle 、Maven 项目,直接 javac 编译.java 文件也支持哦
兼容 Lombok 等语法树替换项目
支持 Android 、JavaWeb 、JavaFx 等开发
几乎不会增加编译时间


为什么还不来试试呢?快快乐乐拼接字符串

JAVA,让摸鱼变得更加快乐~
7716 次点击
所在节点    推广
70 条回复
122006
2021-02-05 14:56:27 +08:00
讲道理,虽然应该都是被标题骗进来的,但是应该都不亏吧。
觉得这个项目做得可以欢迎给个 star 哦
handle233
2021-02-05 15:00:56 +08:00
这是不是该放在推广节点?
chendy
2021-02-05 15:07:15 +08:00
我第一反应是 label break
结果是推广自己的项目,啊这,应该发推广节点吧
Kasumi20
2021-02-05 15:08:22 +08:00
我选择换到 Kotlin
YouLMAO
2021-02-05 15:09:29 +08:00
不能发推广,应该直接扔垃圾箱,为了写个字符串,串改这么多,🧧🧧🧧🧧🧧🧧🧧🧧🧧🧧🧧
Rwing
2021-02-05 15:11:10 +08:00
考虑一下 C# ? 😊
var name = "world";
var text = $@"
<title>
hello {name}
</title>
";
dqzcwxb
2021-02-05 15:17:23 +08:00
没用过 MessageFormat.format()是吧?
AndyAO
2021-02-05 15:17:55 +08:00
很好的项目

Java 在语法方面确实很保守

很多功能需要靠别的项目来实现

虽然这样降低了效率,但是对于协同工作来说,还是有点优势的,因为语法简单读起来就更容易

Go 好像也是这种设计思路,语法上的特性,给的比其他的新型语言要少得多
hehe12980
2021-02-05 15:28:59 +08:00
这玩意不就是 Groovy 里的语法么 通常 def a = 'love', def b = "${a} you" , 不过 java 拼字符 确实鸡儿类累
122006
2021-02-05 15:32:33 +08:00
@Kasumi20 老项目切换 kotlin 还是不可能的,java 目前还是主流。这个更多是一个小插件,进行一个小的功能的优化
122006
2021-02-05 15:34:14 +08:00
@hehe12980 没错,就是用的 Groovy 的语法(也是选择 Groovy 作为 Language Injection 的语言),甚至 Kotlin 也有类似的。
大家都有,java 有一个也不过分吧~
122006
2021-02-05 15:39:53 +08:00
@AndyAO 感谢支持,

直接切换新语言步子跨度太大,门槛更高,使用这种小功能插件并不会影响可读性,正常写法也完全兼容,别人看到也能够理解。

同理,lombok 这么香的原因

更何况是 java 拼字符串实在是一言难尽,而且还很常用。看到一堆加号有点脑袋疼
122006
2021-02-05 15:40:56 +08:00
@dqzcwxb 和 String.format()区别不大。你点进去看看就知道了,这个项目完全是两码事
lllllliu
2021-02-05 15:50:35 +08:00
let a = "Java"
let b = "Script"
let str = `${a}${b}`
mightofcode
2021-02-05 16:31:15 +08:00
我被骗了
我草泥马
learningman
2021-02-05 16:33:25 +08:00
又不是语言内建支持,有啥用
122006
2021-02-05 16:35:27 +08:00
@mightofcode 这位喷子,你在 java 里面用过么?
weizhen199
2021-02-05 16:35:57 +08:00
当年 c#过来写 java 确实这点很难受,还特意自己做了个库
75er
2021-02-05 16:37:16 +08:00
.neter 摸了摸自己的胡子 这不是基础语法吗?
122006
2021-02-05 16:37:54 +08:00
@75er 不好意思,应该在标题中强调在 java 中使用的语法的

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

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

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

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

© 2021 V2EX