繁体   English   中英

使用 Java var 关键字的缺点

[英]Downsides of using Java var keyword

一位演讲者刚刚提到,更改为var是有用的语法糖(对齐变量名称)。 我以为我会检查并发现...

    List<String> list = new ArrayList<>(); // IMO this is safer future-proof coding
    list.add("HELLO WORLD");

... 使用invokeinterface调度生成字节码 ...

 11: invokeinterface #12,  2           // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z

转换为 Java 10+ var ...

    var list = new ArrayList<>();
    list.add("HELLO WORLD");

... 使用invokevirtual调度生成字节码 ...

 11: invokevirtual #12                 // Method java/util/ArrayList.add:(Ljava/lang/Object;)Z

例如,我是否应该担心使用var批量升级整个应用程序的源代码? 例如,敏感部分会更慢(还是更快?!给定invokeinterface涉及更多步骤?)除此之外,是否还有其他非技术影响(例如,我看到了一个关于离线代码审查清晰度的有趣评论)

字节码不同的原因是因为var声明推断了类型ArrayList而不是List 这相当于你写ArrayList<String> list = new ArrayList<>(); 明确地。 因此,如果您不担心在变量声明中将List更改为ArrayList ,那么您也不应该担心将其更改为var

这是 Java,不是 PHP :) 所以,如果我是你,我不会担心。 唯一可能发生的事情是它不会编译,您需要将 var 'revert' 为类型化变量。

var 造成的唯一问题是代码审查期间的头疼问题。

恕我直言,至少。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM