कंपाइलर जानता है कि जेवीएम रनटाइम आसानी से प्रतिनिधित्व कर सकता है। एक मैनिफेस्ट संकलक के लिए एक अंतर-आयामी संदेश को रनटाइम पर कोड को उस प्रकार की जानकारी के बारे में भेजने का एक तरीका है जो खो गया था।
यह उसी तरह है जैसे क्लेप्टोनियन ने जीवाश्म रिकॉर्ड और मानव के "जंक" डीएनए में एन्कोडेड संदेशों को छोड़ दिया है। लाइटस्पेड और गुरुत्वाकर्षण अनुनाद क्षेत्रों की सीमाओं के कारण, वे सीधे संवाद करने में असमर्थ हैं। लेकिन, यदि आप जानते हैं कि उनके सिग्नल को कैसे ट्यून किया जाए, तो आप उन तरीकों से लाभ उठा सकते हैं जिनकी आप कल्पना नहीं कर सकते हैं, यह तय करने से कि लंच के लिए क्या खाना चाहिए या कौन सा लोट्टो नंबर खेलना है।
यह स्पष्ट नहीं है कि एक मैनिफेस्ट आपको उन त्रुटियों से लाभान्वित करेगा जिन्हें आप अधिक विस्तार से जाने बिना देख रहे हैं।
मैनिफ़ेस्ट का एक सामान्य उपयोग यह है कि आपका कोड किसी संग्रह के स्थिर प्रकार के आधार पर भिन्न व्यवहार करता है। उदाहरण के लिए, यदि आप किसी सूची [स्ट्रिंग] को अन्य प्रकार की सूची से अलग करना चाहते हैं, तो क्या होगा:
def foo[T](x: List[T])(implicit m: Manifest[T]) = {
if (m <:< manifest[String])
println("Hey, this list is full of strings")
else
println("Non-stringy list")
}
foo(List("one", "two")) // Hey, this list is full of strings
foo(List(1, 2)) // Non-stringy list
foo(List("one", 2)) // Non-stringy list
इसका प्रतिबिंब आधारित समाधान संभवतः सूची के प्रत्येक तत्व का निरीक्षण करना शामिल होगा।
एक संदर्भ बाउंड स्केला में टाइप-क्लास का उपयोग करने के लिए सबसे अनुकूल लगता है, और देबाशीष घोष द्वारा यहां अच्छी तरह से समझाया गया है:
http://debasishg.blogspot.com/2010/06/scala-implicits-type-classes-here-i.html
संदर्भ सीमाएं भी विधि हस्ताक्षरों को अधिक पठनीय बना सकती हैं। उदाहरण के लिए, उपरोक्त फ़ंक्शन को संदर्भ सीमा जैसे उपयोग करके फिर से लिखा जा सकता है:
def foo[T: Manifest](x: List[T]) = {
if (manifest[T] <:< manifest[String])
println("Hey, this list is full of strings")
else
println("Non-stringy list")
}