一位演讲者刚刚提到更改为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...
 11: invokeinterface #12,  2           // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
... 使用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两者之一。
| 归档时间: | 
 | 
| 查看次数: | 240 次 | 
| 最近记录: |