使用javavar关键字的缺点

t2a7ltrp  于 2021-07-05  发布在  Java
关注(0)|答案(2)|浏览(419)

一位演讲者刚刚提到 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 ? e、 g.敏感区域会变慢(或更快?!鉴于 invokeinterface 包括更多的步骤?)除此之外,还有其他非技术性的影响吗(例如,我看到一个关于离线代码检查的清晰性的有趣评论)

2j4z5cfb

2j4z5cfb1#

字节码不同的原因是 var 声明推断类型 ArrayList 而不是 List . 这相当于你在写作 ArrayList<String> list = new ArrayList<>(); 明确地。所以如果你不担心改变 ListArrayList 在变量声明中,不必担心将其更改为 var 任何一个。

wr98u20j

wr98u20j2#

这是java,不是php:)所以,如果我是你,我就不会担心了。唯一可能发生的事情是它不会编译,您需要将var“还原”为类型化变量。
var造成的唯一问题是代码审查期间的头痛。
至少是这样。

相关问题