• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Cbdy
V2EX  ›  程序员

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

  •  
  •   Cbdy · Apr 10, 2018 via Android · 12819 views
    This topic created in 3133 days ago, the information mentioned may be changed or developed.

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

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

    "aaa\n" +
    "bbb"

    就行;

    对于大量字符串,你确定你一定要把它放到代码里吗?
    这样只要一修改字符串,就要重新编译代码。
    jorneyr
    jorneyr
    Apr 10, 2018
    4
    如果能支持字符串解析变量的功能就更好了,如 "Hello ${username}"
    zael
    zael
    Apr 10, 2018 via iPhone
    5
    @jorneyr kotlin 不是支持吗
    wxyz
    wxyz
    Apr 10, 2018
    6
    @jorneyr 不是有模版吗
    murmur
    murmur
    Apr 10, 2018
    7
    java 如果需要的话就上模板了
    哪里有那么多多行字符串需要拼
    sql 写在 xml 里了
    watzds
    watzds
    Apr 10, 2018 via Android
    8
    多行写好,复制粘贴到 idea 字符串里,会给你换行拼接好
    zhuangzhuang1988
    zhuangzhuang1988
    Apr 10, 2018
    9
    Scala 上。
    fox0001
    fox0001
    Apr 10, 2018 via Android
    10
    @murmur #7 最佳实践
    yzmm
    yzmm
    Apr 10, 2018
    11
    估计是觉得有 StringBuilder 自己拼去,不支持也是正常的。
    we2ex
    we2ex
    Apr 10, 2018 via Android❤️2
    12
    不仅如此,Java 还没有:
    - raw string
    - default parameters
    - true named Arguments
    - getter/setter shorthand
    - String interpolation
    wintercoder
    wintercoder
    Apr 10, 2018
    13
    @jorneyr #4 哈哈 最好的语言 PHP 支持
    xomix
    xomix
    Apr 10, 2018
    14
    - getter/setter shorthand
    这个比多行字符串需求高多了,多行字符串用 stringbuilder 也很好用。
    dobelee
    dobelee
    Apr 10, 2018 via Android
    15
    php 是世界上最好的语言。 🐒
    Fistandantilus
    Fistandantilus
    Apr 10, 2018❤️2
    16
    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
    baicai0817
    Apr 10, 2018
    17
    怎么写啊, let str = 'my name is ${name}' ;;
    Cbdy
    Cbdy
    OP
    Apr 10, 2018
    18
    @xiaxiaocao default parameter 应该不会有了吧,Java 已经有重载了😳
    Fistandantilus
    Fistandantilus
    Apr 10, 2018
    19
    @Cbdy 看邮件组里的讨论,应该会有的,只不过目前人手不够排不上来。一个想法是对于有 default parameter/named parameter 的方法施加限制,比如不能重载,必须是 static 的活着 final 的。
    lastpass
    lastpass
    Apr 10, 2018 via Android
    20
    不支持多行字符串这个我吐槽 N 次了。一直没有。
    j717273419
    j717273419
    Apr 10, 2018
    21
    c#中可以这样

    string a = @"
    a
    b
    c
    ";

    我相信 java 早晚会抄过来的
    ecnelises
    ecnelises
    Apr 10, 2018 via iPhone
    22
    @xomix lombok 啊
    applehater
    applehater
    Apr 10, 2018 via iPhone
    23
    @j717273419 c#的 linq 可以废掉 mybatis 这种吗
    sagaxu
    sagaxu
    Apr 10, 2018 via Android
    24
    @xiaxiaocao kotlin 有的,总有一天 java 都会有
    qalong
    qalong
    Nov 11, 2018
    25
    @bumz 还是需要的,一般改 string 的时候很难不调整其他代码,而且一般发布项目的时候都是整体发布,不建议单文件改,其实顺便吐槽一下 mybatis,把 sql 转化成一种更乱的格式维护也不是那么方便,最起码导航代码是不方便的。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1646 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 88ms · UTC 11:54 · PVG 19:54 · LAX 03:54 · JFK 06:54
    ♥ Do have faith in what you're doing.