Scala içinde JavaConverters ve JavaConversions arasındaki fark nedir?
scala.collection
orada da çok benzer iki nesne JavaConversions
JavaConverters
.
- Bu iki nesne arasındaki fark nedir?
- Neden her ikisi de var mı?
- Ne zaman diğer vs kullanmak istiyor muyum?
CEVAP
JavaConversions
Java Koleksiyonu ve en yakın ilgili Scala koleksiyonu arasında dönüştürme örtülü yöntemleri bir dizi sağlar, ve tersi. Bu temel Java koleksiyon, ya da Java arayüzü ya da Scala arayüzü ve ileri aramaları oluşturma ambalajı mevcut Scala toplama çağrıları yönlendirme yapılır.
JavaConverters
kullandığı pimp-my-kütüphane desen için “ekle” asScala
yöntem için Java koleksiyonları ve asJava
yöntem için Scala koleksiyonları, dönüş uygun mahfazalar yukarıda açıklanmıştır. Daha yeni (sürüm 2.8.1 beri) JavaConversions
(2.8 beri yapılır ve Scala ve Java koleksiyonu arasında dönüşüm açık hale getirir. Aksine ne yazar David onun cevabı, benim önerim bunu bir alışkanlık kullanın JavaConverters
gibi olacaksın çok daha az kod yazmak için yapan bir sürü örtülü dönüşüm, kontrol edebilirsiniz tek nokta nerede olacak nereye yazıyorsun .asScala
.asJava
.
İşte dönüşüm JavaConverters
sağlayan bir yöntem:
Pimped Type | Conversion Method | Returned Type
=================================================================================================
scala.collection.Iterator | asJava | java.util.Iterator
scala.collection.Iterator | asJavaEnumeration | java.util.Enumeration
scala.collection.Iterable | asJava | java.lang.Iterable
scala.collection.Iterable | asJavaCollection | java.util.Collection
scala.collection.mutable.Buffer | asJava | java.util.List
scala.collection.mutable.Seq | asJava | java.util.List
scala.collection.Seq | asJava | java.util.List
scala.collection.mutable.Set | asJava | java.util.Set
scala.collection.Set | asJava | java.util.Set
scala.collection.mutable.Map | asJava | java.util.Map
scala.collection.Map | asJava | java.util.Map
scala.collection.mutable.Map | asJavaDictionary | java.util.Dictionary
scala.collection.mutable.ConcurrentMap | asJavaConcurrentMap | java.util.concurrent.ConcurrentMap
—————————————————————————————————————————————————————————————————————————————————————————————————
java.util.Iterator | asScala | scala.collection.Iterator
java.util.Enumeration | asScala | scala.collection.Iterator
java.lang.Iterable | asScala | scala.collection.Iterable
java.util.Collection | asScala | scala.collection.Iterable
java.util.List | asScala | scala.collection.mutable.Buffer
java.util.Set | asScala | scala.collection.mutable.Set
java.util.Map | asScala | scala.collection.mutable.Map
java.util.concurrent.ConcurrentMap | asScala | scala.collection.mutable.ConcurrentMap
java.util.Dictionary | asScala | scala.collection.mutable.Map
java.util.Properties | asScala | scala.collection.mutable.Map[String, String]
Dönüşümler direk Java kullanmak olsa da, JavaConversions
doğrudan; örneğin, yöntemleri çağıran sen iyisi mi:
List<String> javaList = new ArrayList<String>(Arrays.asList("a", "b", "c"));
System.out.println(javaList); // [a, b, c]
Buffer<String> scalaBuffer = JavaConversions.asScalaBuffer(javaList);
System.out.println(scalaBuffer); // Buffer(a, b, c)
List<String> javaListAgain = JavaConversions.bufferAsJavaList(scalaBuffer);
System.out.println(javaList == javaListAgain); // true
Vim içinde eşleştirmek, noremap, nnore...
Scala'nın durumu, sınıf ve sınıf ...
Parantez ve parantez, Scala, resmi ara...
Scala artış var ve val tanımı arasında...
'filtre arasındaki fark nedir ve ...