J'ai une méthode Java existante comme celle-ci: et j'ai besoin de l'appeler de Scala avec ceci: p> mais Il finit par appeler la méthode de totring sur le paramètre IDList. J'ai essayé ce qui suit en vain n'est disponible: p> qui provoque une erreur de compilation: p> Comment puis-je passer le argument? p> p>
3 Réponses :
Ceci a fait l'astuce:
Vous avez une liste Java maintenant. Alors, comment vous allez le transmettre en paramètre comme Varargs de Java?
Je ne peux pas reproduire cela sur Scala 2.10.4 et Java 8, mais cela semble être un bug.
Vous pouvez éviter le dans votre code SCALA, vous l'appelez comme ceci: p> : _ * code> en ajoutant ces méthodes Java: p>
//scala class object Y { def main(args: Array[String]): Unit = { val idList: Seq[Long] = Seq(1L, 2L, 3L) MyJavaClass.javaFunc("hello", idList: _*) } }
Cela devrait normalement fonctionner, quelle erreur obtenez-vous?
Cela ressemble plus à une erreur de compilateur qui me confond un peu. Cette classe a-t-elle d'autres constructeurs?
Ne peut pas le reproduire non plus. BTW Quelle version Scala utilisez-vous?
Il y a beaucoup d'entre eux qui ont l'air identique mais légèrement différent. C'est en fait une classe ElasseSearch: FilterBuilders.TermsFilterBuilder
Utilisation de SCALA 2.10 - Vous avez raison - il s'agit d'une erreur de compilation. Mais toujours, comment puis-je l'appeler?
Juste pour être sûr, il y a TermfilterBuilder, qui ne prend qu'un seul long et long-TRANSFILTERBUILDER, qui prend les varargs. Avez-vous vérifié pour une faute de frappe?
C'était un bogue dans Scala 2.10.0, devrait être fixé en 2.10.1
Au cas où n'importe qui se demande quel: _ * code> est: Stackoverflow.com/a/6051356/194894