Đây có lẽ là một câu hỏi rất ngớ ngẩn, nhưng tôi đã chơi một chút với tương tác Scala/Java, và đã tự hỏi Tuples chơi tốt như thế nào.Suy luận kiểu Scala Tuple trong Java
Bây giờ, tôi biết rằng cú pháp (Type1, Type2)
là đường chỉ đơn thuần là cú pháp cho Tuple2<Type1, Type2>
, và vì vậy, khi gọi một phương pháp Scala mà trả về một Tuple2 trong một lớp Java đơn giản, tôi đã mong đợi để có được một kiểu trả về của Tuple2<Type1, Type2>
Để rõ ràng, mã Scala của tôi: mã
def testTuple:(Int,Int) = (0,1)
Java:
Tuple2<Object,Object> objectObjectTuple2 = Test.testTuple();
dường như trình biên dịch hy vọng thi s được các loại tham số <Object,Object>
, thay vì, trong trường hợp của tôi, <Integer,Integer>
(đây là những gì tôi đã mong đợi, ít nhất).
Suy nghĩ của tôi có thiếu sót và có một lời giải thích hoàn toàn hợp lý cho việc này không?
HOẶC
Có một vấn đề trong mã Scala của tôi, và có một cách hiện hữu hơn ... rõ ràng, trong các trường hợp mà tôi biết sẽ cung cấp một API cho mã Java?
HOẶC
Đây có phải chỉ là hạn chế không?
Vì vậy, 'Int' không phải là một lớp Scala bình thường? (Nếu có, thì phiên bản 'Int' phải được biên dịch thành' scalaTuple2 'hoặc một cái gì đó tương tự, không?) –
aioobe
Đúng. Từ [scaladocs] (http://www.scala-lang.org/api/current/scala/Int.html): "' Int' là một thành viên của các lớp giá trị, những người có các cá thể không được biểu diễn dưới dạng đối tượng hệ thống máy chủ cơ bản. " [Trang mô tả các loại thống nhất] (http://docs.scala-lang.org/tutorials/tour/unified_types.html) có thể giải thích rõ hơn về nó. – leedm777
Câu trả lời tuyệt vời @ dave, cảm ơn bạn, điều đó có ý nghĩa hoàn hảo vì Int không thể được dịch một cách kỳ diệu thành một lớp Java, tôi đã giả sử nó sẽ được dịch thành Integer. – pcalcao