SORU
28 Kasım 2011, PAZARTESİ


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
28 Kasım 2011, PAZARTESİ


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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • iZAPPA

    iZAPPA

    16 Temmuz 2010
  • Sean Murphy

    Sean Murphy

    4 ŞUBAT 2009
  • stokelycalm

    stokelycalm

    28 Aralık 2010