JDK7和8编译的结果是一样的。
[root@test scalac]# cat a.b
def upper(strs: String*) = strs.map(_.toUpperCase())
[root@test scalac]# scalac -Xscript C a.b
[root@test scalac]#
[root@test scalac]# ll
total 20
-rw-r--r--. 1 root root 53 Mar 22 20:39 a.b
-rw-r--r--. 1 root root 1070 Mar 22 20:40 C$$anon$1$$anonfun$upper$1.class
-rw-r--r--. 1 root root 977 Mar 22 20:40 C$$anon$1.class
-rw-r--r--. 1 root root 572 Mar 22 20:40 C.class
-rw-r--r--. 1 root root 528 Mar 22 20:40 C$.class
看下4个文件内容
AAA.class 入口
import scala.reflect.ScalaSignature;
@ScalaSignature(bytes="\006\001\025:Q!\001\002\t\002\025\t1!Q!B\025\005\031\021a\002\037f[B$\030PP\002\001!\t1q!D\001\003\r\025A!\001#\001\n\005\r\t\025)Q\n\003\017)\001\"a\003\b\016\0031Q\021!D\001\006g\016\fG.Y\005\003\0371\021a!\0218z%\0264\007\"B\t\b\t\003\021\022A\002\037j]&$h\bF\001\006\021\025!r\001\"\001\026\003\021i\027-\0338\025\005YI\002CA\006\030\023\tABB\001\003V]&$\b\"\002\016\024\001\004Y\022\001B1sOZ\0042a\003\017\037\023\tiBBA\003BeJ\f\027\020\005\002 E9\0211\002I\005\003C1\ta\001\025:fI\0264\027BA\022%\005\031\031FO]5oO*\021\021\005\004")
public final class AAA{
public static void main(String[] paramArrayOfString) {
AAA..MODULE$.main(paramArrayOfString);
}
}
AAA$.class
匿名内部类AbstractFunction1
import scala.Serializable;
import scala.collection.Seq;
import scala.collection.Seq.;
import scala.runtime.AbstractFunction1;
public final class AAA${
public static final MODULE$;
static{
new ();
}
public void main(String[] argv){
String[] args = argv;
new Object() {
private Seq upper(Seq strs) {
return (Seq)strs.map(new AbstractFunction1() {
public static final long serialVersionUID = 0L;
public final String apply(String x$1) {
return x$1.toUpperCase();
}
},
Seq..MODULE$.canBuildFrom());
}
};
}
private AAA$() { MODULE$ = this; }
}
AAA$$anon$1.class
import scala.Serializable;
import scala.collection.Seq;
import scala.collection.Seq.;
import scala.runtime.AbstractFunction1;
public final class AAA$$anon$1{
private Seq upper(Seq strs){
return (Seq)strs.map(new AbstractFunction1() {
public static final long serialVersionUID = 0L;
public final String apply(String x$1) {
return x$1.toUpperCase();
}
},
Seq..MODULE$.canBuildFrom());
}
}
AAA$$anon$1$$anonfun$upper$1.class
匿名内部类AbstractFunction1
import scala.Serializable;
import scala.runtime.AbstractFunction1;
public final class AAA$$anon$1$$anonfun$upper$1 extends AbstractFunction1 implements Serializable{
public static final long serialVersionUID = 0L;
public final String apply(String x$1){
return x$1.toUpperCase();
}
public AAA$$anon$1$$anonfun$upper$1(AAA..anon.1 $outer){
}
}