Mã bạn đã viết hoạt động như hiện trạng.
Trình biên dịch scala sẽ tạo ra một phương thức cầu thực hiện chữ ký như được thấy từ Java và chuyển tiếp đến triển khai Scala.
Dưới đây là kết quả của việc chạy javap -c trên lớp của bạn tạo ảnh vui nhộn chính xác như bạn đã viết nó,
public class Awesome implements Footastic,scala.ScalaObject {
public void foo(scala.collection.Seq<Foo>);
Code:
0: getstatic #11 // Field scala/Predef$.MODULE$:Lscala/Predef$;
3: ldc #14 // String WIN
5: invokevirtual #18 // Method scala/Predef$.println:(Ljava/lang/Object;)V
8: return
public void foo(Foo[]);
Code:
0: aload_0
1: getstatic #11 // Field scala/Predef$.MODULE$:Lscala/Predef$;
4: aload_1
5: checkcast #28 // class "[Ljava/lang/Object;"
8: invokevirtual #32 // Method scala/Predef$.wrapRefArray:([Ljava/lang/Object;)Lscala/collection/mutable/WrappedArray;
11: invokevirtual #36 // Method foo:(Lscala/collection/Seq;)V
14: return
public Awesome();
Code:
0: aload_0
1: invokespecial #43 // Method java/lang/Object."<init>":()V
4: return
}
Phương pháp foo đầu tiên với với Seq < Foo> Lập luận tương ứng với Scala varargs phương pháp trong ảnh vui nhộn. Phương thức foo thứ hai với đối số Foo [] là phương thức cầu được trình biên dịch Scala cung cấp.
Nguồn
2011-09-23 19:08:17