2012-04-19 13 views
8

के साथ 2.0 मैंने ट्यूटोरियल Application global settings में दिखाए गए अनुसार ग्लोबलसेटिंग कक्षा बढ़ा दी है।खेल में वैश्विक वस्तु तक पहुंचना! 2.0

फिर मैं इस कक्षा के उदाहरण तक पहुंच कैसे प्राप्त करूं, आइए एक व्यू विधि से कहें? मुझे लगता है कि एप्लिकेशन शुरू होने पर एक उदाहरण बनाया गया था और यह शायद कुछ ऑब्जेक्ट का सदस्य है।

मैं इसे यहाँ खोजने के लिए उदाहरण के लिए उम्मीद करेंगे है

Play.application().getGlobalSettings() 

या कुछ इसी तरह की है, लेकिन मैं इसे खेलने में कहीं भी नहीं मिल सका * पदानुक्रम।।

कोई विचार? धन्यवाद।

उत्तर

-3

बस वैश्विक वस्तु को सीधे संदर्भित करें। उदाहरण के लिए कुछ भी न लिखें:

public class Global extends GlobalSettings {} 

लिखने

object Global extends GlobalSettings {} 

या

object Global extends Global {} 
class Global extends GlobalSettings {} 

और आप वैश्विक वस्तु संदर्भित कर सकते हैं अपने कोड में कहीं भी की तुलना में सिर्फ लिखें:

Global.someMethod() 
+0

क्या वह स्केल है? मुझे यह फॉर्म नहीं पता .. क्या इसका मतलब यह है कि इंस्टेंस किसी भी प्ले संदर्भ से उपलब्ध नहीं है? –

+0

यह स्कैला कोड है। मुझे यकीन नहीं है कि आप जावा में यह कैसे करेंगे। – Slavus

+0

धन्यवाद, लेकिन मैं जावा समाधान की तलाश में हूं, मेरे लिए इतनी सारी नई चीजें हैं और इसलिए मैं इस समय जितना संभव हो उतना छोटा स्काला उपयोग करना चाहता हूं। अभी के लिए मैं सिर्फ * सिंगलटन * पैटर्न का उपयोग कर रहा हूं लेकिन मैं वास्तव में एक बेहतर समाधान खोजना चाहता हूं। –

5

मैं पी के लिए नया हूँ 2.0 रखना, हालांकि, मुझे लगता है कि प्लगइन इंजेक्शन का उपयोग करके आप बेहतर सेवा कर रहे हैं। इस की जाँच करें:

https://github.com/typesafehub/play-plugins/tree/master/inject

इस दृष्टिकोण का उपयोग करते हुए आप बस (के रूप में ऊपर के लिंक में दस्तावेज, और कुछ अन्य विन्यास) अपने नियंत्रक में निम्न पंक्ति जोड़ें:

@Inject static MyStaticObj obj; 

और यह सब बाकी इंजेक्शन ढांचे का उपयोग कर स्वचालित रूप से किया जाता है। वैश्विक, आदि के बारे में चिंता करने की कोई आवश्यकता नहीं है

यह कहा गया है कि, मैंने प्लगइन इंजेक्शन ढांचे की खोज करने से पहले ग्लोबलसेटिंग ऑब्जेक्ट का उपयोग करने के तरीके को समझने के लिए बहुत समय बिताया है।

मेरी समझ यह है कि वैश्विक कैसे लागू किया जाता है (डिफ़ॉल्ट/अनाम पैकेज में कक्षा के रूप में) आवेदन कोड में कहीं भी इसका संदर्भ देना संभव नहीं है। मुझे यकीन नहीं है कि यह डिजाइन या दुर्घटना से था (ऐसा लगता है कि प्ले लोग इन दिनों स्कैला के बारे में सोच रहे हैं ...)। सौभाग्य से प्लगइन दृष्टिकोण इन साझा ग्लोबल्स को संभालने का बेहतर तरीका प्रतीत होता है।

+0

धन्यवाद, मुझे यह भी पता नहीं था कि प्लगइन के लिए ऐसी चीज है ... लेकिन इस प्लगइन का उपयोग करने के बाद से मुझे एक सिंगलटन पैटर्न मिलता है, क्यों न सिर्फ इसे स्वयं करें? इस प्लगइन का उपयोग अपने स्वयं के सिंगलटन कार्यान्वयन पर करने के क्या फायदे हैं? –

संबंधित मुद्दे