Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Tuple2使用访问器方法和直接调用变量之间的区别_Java_Scala_Tuples - Fatal编程技术网

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

Java Tuple2使用访问器方法和直接调用变量之间的区别,java,scala,tuples,Java,Scala,Tuples,我在Java代码中使用了Tuple2,我想知道通过getter访问值与直接获取变量之间是否有区别 Tuple2<String,String> tuple = new Tuple2<>("Hello", "World"); //getting values directly String direct = tuple._1; //using getter String indirect = tuple._1(); Tuple2 tuple=新的Tuple2(“你好”,“世

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

Tuple2<String,String> tuple = new Tuple2<>("Hello", "World");
//getting values directly
String direct = tuple._1;
//using getter
String indirect = tuple._1();
Tuple2 tuple=新的Tuple2(“你好”,“世界”);
//直接获取价值观
字符串直接=元组。\u 1;
//使用吸气剂
字符串间接=元组。_1();

第一个加载一个字段,第二个使用
getField
invokeVirtual
操作码调用该方法。生成的字节码如下所示

  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
编译器乐于内联该方法,从性能角度看,这并不重要