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

Java 10 将引入 var 表示局部变量类型推断(local-variable type inference)功能

  •  
  •   skyyp · Mar 15, 2018 · 8488 views
    This topic created in 3156 days ago, the information mentioned may be changed or developed.

    官方消息,Java 10 将在 2018 年 3 月 20 号正式发布。迄今为止,在官方放出了 Java 10 少数新特性里面,局部变量类型推断(local-variable type inference) 绝对是备受万众瞩目的。它将我们常常在 JS 里面使用的 var 变量引入到语言特性中,把我们从那些冗长的变量声明中解放出来。来吧,舒展你的右手,下面是你以前绝对没有写过的代码:

    var users = new ArrayList<user>();

    http://blog.csdn.net/rickiyeat/article/details/79101931

    https://blog.codefx.org/java/java-10-var-type-inference/

    45 replies  •  2018-03-17 10:34:55 +08:00
    oska117
    oska117
    Mar 15, 2018 via Android
    1
    这样确实舒服,写着看着都不错
    murmur
    murmur
    Mar 15, 2018
    2
    感觉历史在错乱
    js 想尽办法学高级语言搞强类型
    java 在想尽办法摆脱强类型
    geelaw
    geelaw
    Mar 15, 2018❤️5
    3
    Welcome to 2007 (C#)
    Welcome to 2011 (C++)
    leeg810312
    leeg810312
    Mar 15, 2018 via Android❤️2
    4
    @murmur var 声明的仍然是强类型,和 js 的 var 完全不同,只是不在声明时指定,而是编译器根据等号后面的类型来推断,这个特性.net 早就有了,java 的语言特性发展还是太保守了
    orangeade
    orangeade
    Mar 16, 2018
    5
    var 有了,val 呢
    twoyuan
    twoyuan
    Mar 16, 2018
    6
    Welcome to Kotlin
    gs139
    gs139
    Mar 16, 2018
    7
    不知道是喜是忧,对 ide 来说,变量声明并不麻烦
    Luckyray
    Luckyray
    Mar 16, 2018 via iPhone
    8
    只是个语法糖吧……少打了几个字
    kingcos
    kingcos
    Mar 16, 2018 via iPhone
    9
    Welcome to Swift
    night98
    night98
    Mar 16, 2018 via Android
    10
    java9 都还没普及。。。
    lsmgeb89
    lsmgeb89
    Mar 16, 2018
    11
    看来 C++ 抄的比 Java 快一点,哈哈
    contmonad
    contmonad
    Mar 16, 2018 via iPhone
    12
    试一下 var cSharp = new ArrayList<>();
    justinwu
    justinwu
    Mar 16, 2018
    13
    C#里面敲了多少年的东西,Java 终于想起来抄了。
    congeec
    congeec
    Mar 16, 2018
    14
    @orangeade 前面加 final
    orangeade
    orangeade
    Mar 16, 2018
    15
    @congeec #14 我就是讨厌 Java 一堆关键字,我还是学 Kotlin 算了
    jeremaihloo
    jeremaihloo
    Mar 16, 2018 via Android❤️1
    16
    C#十年前的东西,java 现在才有……
    KuroNekoFan
    KuroNekoFan
    Mar 16, 2018 via iPhone
    17
    typescript/swift 这样的大概就是未来的主流语言吧……
    BBCCBB
    BBCCBB
    Mar 16, 2018
    18
    什么时候搞个字符串字面量就好了
    makazeu
    makazeu
    Mar 16, 2018 via Android
    19
    lombok 已经
    makazeu
    makazeu
    Mar 16, 2018
    20
    @makazeu java 使用 lombok 库已经可以这样
    loshine1992
    loshine1992
    Mar 16, 2018
    21
    @orangeade

    kotlin 关键词更多,🍬比较甜
    wayne712
    wayne712
    Mar 16, 2018
    22
    2012 年 C# 5 Async Await 特性,java 要等到哪年 ?
    cstj0505
    cstj0505
    Mar 16, 2018❤️1
    23
    嫌 java 麻烦的用 scala,写起来保证你爽到爆
    ooo3o
    ooo3o
    Mar 16, 2018
    24
    也真难为了写 Java, C#已经愉快用了十多年的旧东西.
    murmur
    murmur
    Mar 16, 2018
    25
    @ooo3o c#日常要火 现在国内就 unity 里用的多吧
    所以决定生火不火的还是看生态而不是看语言本身有多牛逼的特性
    微软当时傻了 非得去搞 j# 后来被搞了才回过头来推 c#
    ooo3o
    ooo3o
    Mar 16, 2018
    26
    @murmur
    开始 MS 是想和太阳一同发展 Java 的, J#就是个超集, 但太阳排斥 MS 这么搞, 还告了 MS, MS 只能放弃 J#, 完全独立自主弄出来 C#.
    fengyj
    fengyj
    Mar 16, 2018 via Android
    27
    Java 要 js 化了?
    breadenglish
    breadenglish
    Mar 16, 2018
    28
    Object users = new ArrayList<user>();
    jeremaihloo
    jeremaihloo
    Mar 16, 2018 via Android
    29
    @murmur 很大程度上微软那个 CEO 鲍莫尔的问题
    honeycomb
    honeycomb
    Mar 16, 2018 via Android
    30
    @night98 从 java9 开始采取类似 Windows 10 快速发布机制,每半年到发布一个大版本,一部分的大版本属于 lts,会获得长期支持。

    目前 jdk8 的公开支持会延续到 2019 年,那个时候第一个 lts ( jdk11 已经发布)
    XIVN1987
    XIVN1987
    Mar 16, 2018
    31
    final var
    真丑!!
    night98
    night98
    Mar 16, 2018
    32
    @honeycomb 这个可以,问题主要是国内 1.8 还没普及,正在流行中,这 10 版本就出来了,有点丧心病狂。。
    xAx
    xAx
    Mar 16, 2018
    33
    oracle 脑子坏了。把服务端的东西拿来学用户端的产品,刷版本号...
    jdk8 可以战十年,后面的那些不准备学了。
    转 golang
    A555
    A555
    Mar 16, 2018
    34
    没有注释的代码可读性就更差了
    baoanlol
    baoanlol
    Mar 16, 2018❤️1
    35
    @cstj0505 严重同意!!!就是国内 scala 工作不好找啊。。我都没怎么看到过。。(想跳槽都不知道去哪里
    GoodRainChen
    GoodRainChen
    Mar 16, 2018
    36
    @gs139
    同意,在 ide 里写 java,各种声明一般 3 个字提示也该出来了,弄个 var 省不了多少功夫,还难看
    linbiaye
    linbiaye
    Mar 16, 2018
    37
    什么,java 到 10 了???
    LosLord
    LosLord
    Mar 16, 2018 via Android
    38
    @orangeade 现阶段学 kotlin,还是离不开 java
    huclengyue
    huclengyue
    Mar 16, 2018 via Android
    39
    @leeg810312 这点感觉跟 kotlin 很想。。
    huclengyue
    huclengyue
    Mar 16, 2018 via Android
    40
    @cstj0505 kotlin 可以试试。。目前 jvm 语言里感觉最好的一个
    huclengyue
    huclengyue
    Mar 16, 2018 via Android
    41
    @XIVN1987 val 代替 final var
    panpanpan
    panpanpan
    Mar 16, 2018 via iPhone❤️1
    42
    IDEA Alt+Entry 了解一下,抱歉我从来不写变量定义。
    panpanpan
    panpanpan
    Mar 16, 2018 via iPhone
    43
    @panpanpan Enter
    secondwtq
    secondwtq
    Mar 17, 2018
    44
    这个东西按照 C++ 的 jargon 来说叫 type deduction,我是觉得这个名字更合适一点的,因为 ML,Haskell,Scala 和 C++11/C#/Java 的所谓 type inference 完全是 different beasts,和 Java 这个类似的在 V 站主流热捧的 Golang 中也有体现
    顺便 80 年代之前代表性的算法 Algorithm W 就已经提出了(根据 wikipedia 最早的 type inference 算法在 58 年就出现了),85 年 Miranda,90 年 Standard ML 标准,这个标准最后一次修订的时候我还在娘胎里

    所以说 10 年不是总量,而是单位
    当然看起来对于 Java 来讲,以世纪作为单位好像也没什么太大的关系
    fox0001
    fox0001
    Mar 17, 2018 via Android
    45
    @breadenglish #28 哈哈哈
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3999 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 116ms · UTC 05:35 · PVG 13:35 · LAX 21:35 · JFK 00:35
    ♥ Do have faith in what you're doing.