स्काला अभी भी एक प्रतिबिंब एपीआई याद आ रही है:
package myPackage
object myObject
... फिर वहाँ इस तरह कुछ भी नहीं है।
import scala.reflect.Manifest
def companionObj[T](implicit man: Manifest[T]) = {
val c = Class.forName(man.erasure.getName + "$")
c.getField("MODULE$").get(c)
}
scala> companionObj[List[Int]].asInstanceOf[List$].make(3, "s")
res0: List[Any] = List(s, s, s)
इस तरह स्केला पर निर्भर करता है:
import scala.reflect._
def companion[T](implicit man: Manifest[T]) : T =
man.erasure.getField("MODULE$").get(man.erasure).asInstanceOf[T]
scala> companion[List$].make(3, "s")
res0: List[Any] = List(s, s, s)
untyped साथी आप जिस ऑब्जेक्ट वर्ग सीधे उपयोग कर सकते हैं प्राप्त करने के लिए: आप साथी वस्तु वर्ग लोड करके साथी वस्तु का एक उदाहरण प्राप्त कर सकते हैं जावा कक्षाओं में मैप किया गया है।
स्रोत
2009-12-16 08:18:54
पवित्र गाय की तरह कर सकते हैं। क्या आप जानते हैं कि यह वाक्यविन्यास स्कैला स्पेक का एक निश्चित हिस्सा है (जैसा कि भाषा में किसी और चीज के रूप में तय किया गया है)? ऐसा लगता है कि इस पर भरोसा करना एक बुरा विचार है। और चूंकि मेरा लक्ष्य कोड * स्पष्ट * बनाना था ... धन्यवाद! – Dave
जैसा कि उन्होंने उल्लेख किया है, अभी तक स्कैला में कोई प्रतिबिंब एपीआई नहीं है, इसलिए क्या यह स्कैला स्पेक द्वारा कवर किया गया है या नहीं, यह आपके लिए ऐसा करने का एकमात्र तरीका है। मैंने देखा कि यह प्रश्न/उत्तर एक वर्ष से अधिक पुराना है, क्या यहां कोई खबर है? – pdinklag