Java 8 之后,还有哪些进化的功能?( 四 )
但是有一些例外。例如,var不能很好地用于菱形操作符。在创建泛型的实例时,菱形操作符可以让表达式右侧不那么繁琐:
由于该运算符只处理泛型类型,所以我们依然可以去掉一些冗余。我们可以通过var进一步简化:
这个例子是合法的,而且Java 11编译器甚至都不会发出警告。但是,我们没有为泛型类型指定任何类型,导致所有类型都必须推断,所以最后的类型是Map。
当然,只需去掉菱形运算符就可以解决这个问题:
另一个问题是在基本数据类型上使用var:
如果不给出显式类型定义,那么所有变量都会被推断为int。所以,使用基本数据类型时要使用类型字面量(例如1L),或者不要使用var。
务必阅读官方的风格指南
何时使用类型推断、怎样做不会破坏易读性和正确性,这些问题最终都需要你自己判断。经验法则是:遵循优秀的编程实践,比如良好的命名规则、尽力减小局部变量作用域等都会有很大帮助。请务必阅读官方有关var的风格指南(https://openjdk.java.net/projects/amber/LVTIstyle.html)和FAQ(https://openjdk.java.net/projects/amber/LVTIFAQ.html)。
推荐阅读
- 明日之后|明日之后:唯一一次无差评的联动玩法,萌新可能没见过!
- 手机游戏|酒馆战棋:全员恶霸,对5星随从已经过时?新英雄还有新玩法!
- 今屿|今屿媲美花海,小胖回归还有位置吗?李九:小胖不出,花海无敌
- 黑暗与光明|炉石传说英雄卡,曾经强度T0,两年过去,还有人记得雷诺吗?
- 暴雪|暴雪新总裁刚上任3个月就离职,这一次,暴雪还有救吗
- 吃鸡游戏|“吃鸡”高达天降模式的隐藏玩法!不仅可以打卡,而且还有物资!
- |原神梦里生花,可以改变稻妻的样子了,还有420钻,胡桃在等你哦
- 阴阳师|除了爱玩游戏的新岛民,《动物森友会》新版本还有一个电竞彩蛋
- 猪八戒|王者荣耀:李元芳为什么突然间强势了起来?很久没加强,还有天敌
- 明日之后|明日之后“人尸大战”展现中国精神:人类的未来我们共同争取