首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Java var关键字的缺点

使用Java var关键字的缺点
EN

Stack Overflow用户
提问于 2020-09-04 05:43:32
回答 2查看 376关注 0票数 1

一位演示者刚刚提到,更改为var是有用的语法糖(对齐变量名称)。我想我应该检查一下然后发现...

代码语言:javascript
复制
    List<String> list = new ArrayList<>(); // IMO this is safer future-proof coding
    list.add("HELLO WORLD");

..。使用invokeinterface分派生成字节码...

代码语言:javascript
复制
 11: invokeinterface #12,  2           // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z

正在转换为Java 10+ var ...

代码语言:javascript
复制
    var list = new ArrayList<>();
    list.add("HELLO WORLD");

..。使用invokevirtual分派生成字节码...

代码语言:javascript
复制
 11: invokevirtual #12                 // Method java/util/ArrayList.add:(Ljava/lang/Object;)Z

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

EN

回答 2

Stack Overflow用户

发布于 2020-09-04 06:05:34

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

票数 6
EN

Stack Overflow用户

发布于 2020-09-04 05:59:16

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

var产生的唯一问题是在代码审查期间令人头疼的问题。

至少是我。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63732044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档