9
votes

Java <-> Conversions de collecte Scala, SCALA 2.10

regarder le code dans javaconversions et javaconverters , je ne suis pas sûr que le "correct" (avec 2,10) à convertir entre Java et Scala Collections (dans les deux sens ) est.

Il semble y avoir beaucoup d'annotations @depated.

a une réponse définitive de l'équipe Scala (Tytsafe?) Été Publié?

merci, John


1 commentaires

Voir Stackoverflow.com/questions/8301947/...


3 Réponses :


13
votes

Je ne connais pas de telles proclamations, mais vous devriez toujours utiliser Javaconverters , c'est-à-dire ceux qui vous obligent à indiquer des conversions avec .Asscala et .ASJAVA .

Comme je le comprends, Javaconverters a été introduit en 2.8.1 car le Javaconversions en 2.8 était dangereux et a permis de convertir accidentellement des choses où vous n'étiez pas attendre cela.


0 commentaires

6
votes

Les deux fonctionnent d'une manière différente:

  • avec javaconverters Vos objets seront entrés dans une classe qui prennent en charge Asscala et Asjava, ce qui vous permettra de convertir programmatiquement votre collection.

  • avec javaconversions, une collection Java / Scala sera automatiquement convertie lorsque requis

    Le risque avec ce dernier est d'obtenir des conversions erronées ou inutiles payant une performance la faute. De plus, au moins dans Scala 2.9, il n'y a pas de mise en cache de conversion implicite, c'est-à-dire si la même conversion est appliquée deux fois à l'intérieur d'une méthode, le code de conversion est appelé deux fois.

    Lorsque vous convertissez explicitement une collection, si vous en avez besoin dans la version "Java", vous éviterez d'appeler deux fois .asscala dans la même méthode.


0 commentaires

16
votes

Ceci est l'exemple d'affiche des dangers de Importer javaconversions ._ : xxx

au lieu d'émettre une erreur de type, le compilateur convertit le code SCALA Carte à à un java.util.map , qui a une signature de lâche qui accepte objet .


0 commentaires