Bagaimana cara mengubah Scala scala.List
menjadi Java java.util.List
?
java
scala
scala-java-interop
Alex Baranosky
sumber
sumber
Jawaban:
Daftar Scala dan Daftar Jawa adalah dua binatang yang berbeda, karena yang pertama tidak dapat diubah dan yang terakhir dapat berubah. Jadi, untuk berpindah dari satu sama lain, Anda harus terlebih dahulu mengubah Daftar Scala menjadi koleksi yang bisa diubah.
Di Scala 2.7:
Dari Scala 2.8 dan seterusnya:
Namun,
asList
dalam contoh tersebut tidak diperlukan jika jenis yang diharapkan adalah JavaList
, karena konversinya bersifat implisit, seperti yang ditunjukkan oleh baris terakhir.sumber
scala.collection.JavaConverters
dari 2.12 padaTidak yakin mengapa ini belum disebutkan sebelumnya, tetapi menurut saya cara yang paling intuitif adalah dengan memanggil
asJava
metode dekorator JavaConverters langsung di daftar Scala:sumber
Untuk meringkas jawaban sebelumnya
Dengan asumsi kami memiliki yang berikut
List
:Jika Anda ingin lebih eksplisit dan mengatakan dengan tepat apa yang ingin Anda ubah:
Jika Anda tidak ingin mengontrol konversi bersama dan membiarkan compiler membuat pekerjaan implisit untuk Anda:
Terserah Anda bagaimana Anda ingin mengontrol kode Anda.
sumber
Memulai
Scala 2.13
, paketscala.jdk.CollectionConverters
menyediakanasJava
melalui germoSeq
dan mengganti paketscala.collection.JavaConverters/JavaConversions
:sumber
Pertanyaan yang cukup lama, meskipun saya akan menjawab, diberikan tetapi sebagian besar saran sudah usang.
sumber
object JavaConversions in package collection is deprecated (since 2.12.0): use JavaConverters
Memperbarui
dengan skala 2.9.2:
hasil
sumber
Untuk pemanggilan tunggal, melakukannya dengan tangan mungkin merupakan solusi paling sederhana:
Saya tidak mengukur kinerja.
sumber
Hanya melakukan seperti yang diusulkan di atas menghasilkan daftar yang tidak dapat diubah bahkan di sisi Java. Satu-satunya solusi yang berfungsi yang saya temukan adalah ini:
sumber
Sejak Scala 2.12.0 JavaConversions tidak digunakan lagi.
Jadi solusi paling sederhana bagi saya adalah:
sumber
import scala.collection.JavaConverters._
untuk 2.12.4