복붙노트

[SCALA] 스칼라에서 JavaConverters과 JavaConversions의 차이점은 무엇입니까?

SCALA

스칼라에서 JavaConverters과 JavaConversions의 차이점은 무엇입니까?

scala.collection에서 두 개의 매우 유사한 객체 JavaConversions 및 JavaConverters이있다.

해결법

  1. ==============================

    1.편집 : 자바 변환은 스칼라 2.13.0에 @deprecated되었다. 대신 scala.jdk.CollectionConverters를 사용합니다.

    편집 : 자바 변환은 스칼라 2.13.0에 @deprecated되었다. 대신 scala.jdk.CollectionConverters를 사용합니다.

    JavaConversions는 Java 수집과 가장 가까운 해당 스칼라 수집, 반대의 경우도 마찬가지 사이의 변환 암시 적 방법의 시리즈를 제공합니다. 이는 스칼라 인터페이스를 구현하고 기본 스칼라 컬렉션에 호출을 전달, 기본 자바 콜렉션, 또는 Java 인터페이스에 통화를 전달 래퍼를 생성하여 수행됩니다.

    JavaConverters는 위에서 설명한 적절한 래퍼를 반환 스칼라 컬렉션에 자바 컬렉션과 asJava 방법에 asScala 방법을 "추가"로 포주 - 내 - 라이브러리 패턴을 사용합니다. 그것은 (2.8 이후) JavaConversions 이상 (버전 2.8.1부터) 새로운이며, 스칼라 및 명시 적으로 자바 콜렉션 사이의 변환합니다. 다윗은 그의 대답에 기록 것과는 달리, 난 당신이 당신이 암시 적 변환을 많이하게 코드를 작성하기가 훨씬 더 덜 수있을 것입니다 당신이 유일한 자리를 제어 할 수있는, JavaConverters를 사용하는 습관을 만들 것을 권 해드립니다 곳의 뜻 일 : 당신이 .asScala 또는 .asJava 쓰기 곳.

    여기 JavaConverters가 제공하는 변환 방법입니다 :

    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]
    

    자바에서 직접 변환을 사용하지만, 직접 JavaConversions에서 메소드를 호출하는 것이 더 낫다; 예컨대 :

    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
    
  2. ==============================

    2.스칼라 2.12.x 이후이 질문에 착륙 누군가를 위해, JavaConversions는 이제 사용되지 않으며 JavaConverters이 선호되는 방법이다.

    스칼라 2.12.x 이후이 질문에 착륙 누군가를 위해, JavaConversions는 이제 사용되지 않으며 JavaConverters이 선호되는 방법이다.

  3. ==============================

    3.API에서 설명한 바와 같이, 스칼라 JavaConversions 관련 컬렉션에 자바 콜렉션 변환 암시 적 변환의 집합이다.

    API에서 설명한 바와 같이, 스칼라 JavaConversions 관련 컬렉션에 자바 콜렉션 변환 암시 적 변환의 집합이다.

    당신은 가져 오기 collection.JavaConversions._로 사용할 수 있습니다. 필요한 경우, 컴파일러는 자동으로 바로 스칼라 타입으로 자바 컬렉션을 변환합니다.

    JavaConverters는 암시 적으로 변환하려는 컬렉션에 추가됩니다 asScala를 사용하여 스칼라 또는 자바 컬렉션 또는 asJava 방법에 자바 또는 스칼라 컬렉션을 변환하는 데 도움이 장식의 집합입니다. 이러한 컨버터를 사용하려면 가져와야합니다 :

    import collection.JavaConverters._
    

    이 (asScala 또는 asJava를 사용할 필요)를 사용하지 않는 것이 일반적으로 쉽게대로 JavaConversions를 선호한다.

  4. ==============================

    4.스칼라 2.13에서 JavaConverters는 scala.jdk.CollectionConverters에 찬성 사용되지 않습니다 :

    스칼라 2.13에서 JavaConverters는 scala.jdk.CollectionConverters에 찬성 사용되지 않습니다 :

  5. from https://stackoverflow.com/questions/8301947/what-is-the-difference-between-javaconverters-and-javaconversions-in-scala by cc-by-sa and MIT license