V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Cbdy
V2EX  ›  程序员

Java 为何迟迟不支持多行字符串?

  •  
  •   Cbdy · 2018-04-10 08:06:29 +08:00 via Android · 11661 次点击
    这是一个创建于 2453 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有什么预处理的库,类似 JavaScript 的 Babel 达到这个效果不?

    第 1 条附言  ·  2018-04-10 15:02:44 +08:00
    多谢 @xiaxiaocao 给出的关键词
    Project Amber
    http://openjdk.java.net/jeps/326
    25 条回复    2018-11-11 19:19:52 +08:00
    johnniang
        1
    johnniang  
       2018-04-10 08:08:55 +08:00 via Android
    有什么特殊的需求么
    MoHen9
        2
    MoHen9  
       2018-04-10 08:10:53 +08:00 via Android
    你可以使用 groovy 来做这件事,对于简单的业务,就把 groovy 当 Java 使用就行。
    bumz
        3
    bumz  
       2018-04-10 08:34:07 +08:00
    对于少量字符串,多行用

    "aaa\n" +
    "bbb"

    就行;

    对于大量字符串,你确定你一定要把它放到代码里吗?
    这样只要一修改字符串,就要重新编译代码。
    jorneyr
        4
    jorneyr  
       2018-04-10 08:37:59 +08:00
    如果能支持字符串解析变量的功能就更好了,如 "Hello ${username}"
    tomoya92
        5
    tomoya92  
       2018-04-10 08:43:48 +08:00 via iPhone
    @jorneyr kotlin 不是支持吗
    wxyz
        6
    wxyz  
       2018-04-10 08:45:49 +08:00
    @jorneyr 不是有模版吗
    murmur
        7
    murmur  
       2018-04-10 08:52:32 +08:00
    java 如果需要的话就上模板了
    哪里有那么多多行字符串需要拼
    sql 写在 xml 里了
    watzds
        8
    watzds  
       2018-04-10 09:44:41 +08:00 via Android
    多行写好,复制粘贴到 idea 字符串里,会给你换行拼接好
    zhuangzhuang1988
        9
    zhuangzhuang1988  
       2018-04-10 09:48:33 +08:00
    Scala 上。
    fox0001
        10
    fox0001  
       2018-04-10 10:00:11 +08:00 via Android
    @murmur #7 最佳实践
    yzmm
        11
    yzmm  
       2018-04-10 10:32:51 +08:00
    估计是觉得有 StringBuilder 自己拼去,不支持也是正常的。
    we2ex
        12
    we2ex  
       2018-04-10 10:50:02 +08:00 via Android   ❤️ 2
    不仅如此,Java 还没有:
    - raw string
    - default parameters
    - true named Arguments
    - getter/setter shorthand
    - String interpolation
    wintercoder
        13
    wintercoder  
       2018-04-10 12:45:15 +08:00
    @jorneyr #4 哈哈 最好的语言 PHP 支持
    xomix
        14
    xomix  
       2018-04-10 13:11:16 +08:00
    - getter/setter shorthand
    这个比多行字符串需求高多了,多行字符串用 stringbuilder 也很好用。
    dobelee
        15
    dobelee  
       2018-04-10 13:13:24 +08:00 via Android
    php 是世界上最好的语言。 🐒
    xiaxiaocao
        16
    xiaxiaocao  
       2018-04-10 13:13:56 +08:00   ❤️ 2
    Java 前几年发展比较慢,现在开始慢慢增加了。
    现在有 Project Amber,刚 Java10 里加入了 var 来做类型推导,多行字符串已经有 JEP 了,http://openjdk.java.net/jeps/326。
    除此之外,还有 Record(Data Class,省去 getter/setter/toString/equals),Pattern Match 在做,将来也会有 named parameter 和 default parameter。
    当然,这都还需要时间。
    baicai0817
        17
    baicai0817  
       2018-04-10 13:53:16 +08:00
    怎么写啊, let str = 'my name is ${name}' ;;
    Cbdy
        18
    Cbdy  
    OP
       2018-04-10 15:11:58 +08:00
    @xiaxiaocao default parameter 应该不会有了吧,Java 已经有重载了😳
    xiaxiaocao
        19
    xiaxiaocao  
       2018-04-10 15:37:48 +08:00
    @Cbdy 看邮件组里的讨论,应该会有的,只不过目前人手不够排不上来。一个想法是对于有 default parameter/named parameter 的方法施加限制,比如不能重载,必须是 static 的活着 final 的。
    lastpass
        20
    lastpass  
       2018-04-10 15:57:02 +08:00 via Android
    不支持多行字符串这个我吐槽 N 次了。一直没有。
    j717273419
        21
    j717273419  
       2018-04-10 17:27:12 +08:00
    c#中可以这样

    string a = @"
    a
    b
    c
    ";

    我相信 java 早晚会抄过来的
    ecnelises
        22
    ecnelises  
       2018-04-10 17:39:49 +08:00 via iPhone
    @xomix lombok 啊
    applehater
        23
    applehater  
       2018-04-10 19:21:38 +08:00 via iPhone
    @j717273419 c#的 linq 可以废掉 mybatis 这种吗
    sagaxu
        24
    sagaxu  
       2018-04-10 19:27:32 +08:00 via Android
    @xiaxiaocao kotlin 有的,总有一天 java 都会有
    qalong
        25
    qalong  
       2018-11-11 19:19:52 +08:00
    @bumz 还是需要的,一般改 string 的时候很难不调整其他代码,而且一般发布项目的时候都是整体发布,不建议单文件改,其实顺便吐槽一下 mybatis,把 sql 转化成一种更乱的格式维护也不是那么方便,最起码导航代码是不方便的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2768 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 14:30 · PVG 22:30 · LAX 06:30 · JFK 09:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.