gpt4 book ai didi

Java Tuple2 使用访问器方法和直接调用变量的区别

转载 作者:搜寻专家 更新时间:2023-11-01 03:18:37 25 4
gpt4 key购买 nike

我在我的 Java 代码中使用 Tuple2,我想知道通过 getter 访问值和直接获取变量之间是否有区别。

Tuple2<String,String> tuple = new Tuple2<>("Hello", "World");
//getting values directly
String direct = tuple._1;
//using getter
String indirect = tuple._1();

最佳答案

第一个加载一个字段,其中第二个调用使用 getFieldinvokeVirtual 操作码的方法。生成的字节码看起来像

  13: getfield      #6                  // Field scala/Tuple2._1:Ljava/lang/Object;
16: checkcast #7 // class java/lang/String
19: astore_2
20: aload_1
21: invokevirtual #8 // Method scala/Tuple2._1:()Ljava/lang/Object;
24: checkcast #7 // class java/lang/String

区别在于字段读取和方法调用之间的区别,即 JIT 编译器很乐意内联该方法,这在性能方面无关紧要。

关于Java Tuple2 使用访问器方法和直接调用变量的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38729097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com