scala - जावा सूची से स्कैला सूची कैसे प्राप्त करें?




(4)

मेरे पास एक जावा एपीआई है जो एक सूची देता है जैसे:

public List<?> getByXPath(String xpathExpr)

मैं नीचे स्कैला कोड का उपयोग कर रहा हूँ:

val lst = node.getByXPath(xpath)

अब अगर मैं स्कैला सिंटैक्स चीनी की तरह कोशिश करता हूं:

lst.foreach{ node => ... }

यह काम नहीं करता। मुझे त्रुटि मिलती है:

value foreach is not a member of java.util.List[?0]

ऐसा लगता है कि मुझे जावा सूची को स्कैला सूची में परिवर्तित करने की आवश्यकता है। उपर्युक्त संदर्भ में ऐसा कैसे करें?


इसके लिए एक आसान scala.collection.JavaConverters ऑब्जेक्ट है - scala.collection.JavaConverters

आप निम्नानुसार आयात और asScala कर सकते हैं:

import scala.collection.JavaConverters._

val lst = node.getByXPath(xpath).asScala
lst.foreach{ node =>   .... }

इससे आपको स्काला के Buffer प्रतिनिधित्व करना चाहिए जिससे आप foreach को पूरा कर सकें।


मैं जावा में लिखे गए एक उत्तर की तलाश में था और आश्चर्यजनक रूप से यहां कोई साफ समाधान नहीं मिला। थोड़ी देर के बाद मैं इसे समझने में सक्षम था इसलिए मैंने इसे यहां जोड़ने का फैसला किया अगर कोई अन्य जावा कार्यान्वयन की तलाश में है (मुझे लगता है कि यह स्कैला में भी काम करता है?):

JavaConversions.asScalaBuffer(myJavaList).toList()

स्केल 2.8.1 उपयोगकर्ता JavaConvertest._ के बाद से

स्कैला और जावा संग्रह एस्काला और asJava विधियों का उपयोग कर।

import scala.collection.JavaConverters._

javalist.asScala

scalaSeq.asJava

रूपांतरण संबंध स्कैला दस्तावेज़ साइट देखें


स्कैला 2.8 के बाद से यह रूपांतरण अब भाषा में बनाया गया है:

import scala.collection.JavaConversions._

...

lst.toList.foreach{ node =>   .... }

काम करता है। asScala काम नहीं किया था





scala