2011-08-23 37 views

Trả lời

23

Có một số article trên scala-lang với sơ đồ tuyệt vời (tôi thậm chí đặt nó trên tường). Và cũng cần phải được đề cập:

If Scala is used in the context of a Java runtime environment, then scala.AnyRef corresponds to java.lang.Object.

+3

Đúng. Chú ý rằng' AnyRef' không phải là 'Any', nhưng là một phân lớp' .'' cũng có phân lớp 'AnyVal' cũng là –

+0

@ Biểu đồ cho thấy nó rất rõ ràng.Không hiểu, có điều gì tôi bỏ lỡ không? – 4e6

+3

không, bạn đã không bỏ lỡ bất cứ điều gì, tôi chỉ muốn làm rõ cho những người không theo liên kết. –

21

Any bao gồm những thứ không phải là Object s trong Java; nó bao gồm các kiểu nguyên thủy và cũng có thể là Nothing. Object là cùng một lớp như trong Java, do đó, nó chắc chắn loại trừ nguyên thủy.

+6

Vì vậy, nếu bạn đang cố gắng sử dụng phương pháp Java sử dụng Object, Bạn có gặp rắc rối nếu bạn chuyển đổi nguyên thủy hoặc chuyển đổi hoàn toàn không? –

+0

@JamesMcMahon Tôi tự hỏi như vậy. – 2rs2ts

+0

@James tôi đã thử 'def met (a: java.lang.Object) = {}; val i = 10; gặp (i) 'và đây là đầu ra từ trình biên dịch: * lỗi: kiểu kết quả của một chuyển đổi ngầm định phải cụ thể hơn AnyRef * http://stackoverflow.com/a/26550576/4541480, nó đã làm việc với' val i: java.lang.Integer = 10' (không có mặc định 'val i: Int = 10' – Nicofisi

Các vấn đề liên quan