真是天道好轮回, Java 新特性:用 var 关键字,数据类型可以扔掉了?

2020-09-30 15:00:28 +08:00
 shew5689

//JDK 10 中新增了 var 局部变量推断的功能:

//场景一:定义字符串 //旧写法:

String str = "Hello, Java.";

//新写法:

var s = "Hello, Java.";

//PS:这里的旧写法指的是 JDK 10 之前的版本,而新写法指的是 JDK 10 以后(包含 JDK 10 )的版本。

//场景二:数值相加 //旧写法:

int num1 = 111; double num2 = 555.666d; double num3 = num1 + num2; System.out.println(num3);

//PS:当遇到不同类型相加时( int+ double )会发生数据类型向上转型,因此 num3 就会升级为 double 类型。

//新写法:

var n1 = 111L; var n2 = 555.666; var n3 = n1 + n2; System.out.println(n3);

//场景三:集合 //旧写法:

List<Object> list = new ArrayList<>(); list.add("Hello"); list.add("Java");

//新写法:

var list = new ArrayList<>(); list.add("Hello"); list.add("Java"); //......

//JavaScript:我慢慢靠近你,你慢慢靠近我,你中有我,我中有你,我特么谢谢你~

7908 次点击
所在节点    Java
90 条回复
kuro1
2020-09-30 16:04:09 +08:00
golang
a := "hellp"
cmdOptionKana
2020-09-30 16:04:15 +08:00
@allan888 读代码 /code review 主要看逻辑吧,多数时间不需要管类型啊。而且多数情况下如果类型有错,IDE 会有提示。

类型推导之所以能流行,就是因为实践中不需要那么 verbose 。
tabris17
2020-09-30 16:07:03 +08:00
C#早八百年就实现的语法糖

这只是类型推导,不是可变类型
tabris17
2020-09-30 16:10:22 +08:00
@pkoukk 我去考证了一下,C#3.0 的特性,2007 年就有了
majiaxin110
2020-09-30 16:13:13 +08:00
人家就是个语法糖
tctc4869
2020-09-30 16:14:34 +08:00
你才知道?
allan888
2020-09-30 16:16:14 +08:00
@cmdOptionKana 因为 review 基本都尽量希望在 github 上看完,实在不确定才 pull 下来看。
理论上类型问题不大,但是比如你写一个 map 一开始就写好类型我就更好理解这个 map 怎么设计的也大概猜到后面会怎么用,Map 这些类型被玩出花的时候我感觉光靠眼睛看还是有点累。我主要想说如果一件事多花费写的时间,但是省下读的时间的话,长期看对大家都是非常非常值得的。
jaylee4869
2020-09-30 16:16:27 +08:00
旧特性:类型推导。
chouchoui
2020-09-30 16:16:39 +08:00
Javaer 的没见识真的是笑料
wysnylc
2020-09-30 16:18:12 +08:00
@Reficul #11 眼里有偏见的人只会看到偏见
la2la
2020-09-30 16:22:24 +08:00
这个不是 scala 嘛
superrichman
2020-09-30 16:23:10 +08:00
python:你啥时候把 var 也扔掉?
MarioLuo
2020-09-30 16:23:33 +08:00
@wupher 学习了 2 天的 kotlin, 问个问题,老项目值不值得切换到 kotlin 了?,kotlin 确实解决了 java 开发中的日常痛点,不过目前看没有太大的吸引力去驱动老项目切换到 kotlin
quan01994
2020-09-30 16:25:46 +08:00
不,
java 的 var 在我看来还是有点不舒服,有可能我已经习惯了写类型。
但是写 C#的时候通篇 var,都不会感到不舒服。。。
dadachen1997
2020-09-30 16:26:20 +08:00
这是“新”特性吗,用了有两年多了。。。。
tachikomachann
2020-09-30 16:27:48 +08:00
我觉得以后 idea 估计会跟进,在 var 定义的地方提示类型
starcraft
2020-09-30 16:34:36 +08:00
显然是 C#那套 var 啊,关 js 什么事。
chendy
2020-09-30 16:37:19 +08:00
悄悄说一句,lombok 有个 var,甚至有 val
但是还是用不惯,毕竟平时也不需要手打类型,都是 .var 出来的
goodboy95
2020-09-30 16:38:59 +08:00
@tachikomachann idea 到 2019.1 了都没更新自动提示 var 类型的功能,vscode java 插件倒是支持了
sxfscool
2020-09-30 16:40:05 +08:00
两个槽点:
1.java10 就有的特性,很久之前就有了
2.各位 javaer 的抱残守缺我是没想到的

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

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

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

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

© 2021 V2EX