反编译jdk10 的本地变量类型推断 观察其实现细节
源代码:
public class VarTest{
public static void main(String[] args) {
var s="abc";
var s2="bbc";
var i=1;
var j=2;
var k='e';
System.out.println(s+s2+i+j+k);
}
}
反编译后的代码:
import java.io.PrintStream;
import java.lang.invoke.StringConcatFactory;
public class VarTest {
public static void main(String[] arrstring) {
String string = "abc";
String string2 = "bbc";
boolean bl = true;
int n = 2;
int n2 = 101;
System.out.println((String)((Object)StringConcatFactory.makeConcatWithConstants(new Object[]{"\u0001\u0001\u0001\u0001\u0001"}, string, string2, bl, n, n2)));
}
}
可以看到反编译的代码和以前的代码并没有什么区别,只是String的“+”的实现细节改变了,以前的版本是StringBuilder.append,现在换成了另一个方法来实现。