2009-09-11 9 views
38

संभव डुप्लिकेट में एक और संपत्ति देख सकते हैं:

key1= My name is 
key2= ${key1} Martin ! 
:

How to reference another property in java.util.Properties?

देखो मेरी "file.properties" पर


क्यों मुझे " key2 "मेरा परिणाम है" $ {key1} मार्टिन! " "मेरा नाम मार्टिन है!" के विपरीत

जावा 6
में => मैं इस कार्यक्रम => मैं java.util.Properties

उत्तर

27

आप अपाचे विन्यास को देखने के लिए चाहते हो सकता,

http://commons.apache.org/configuration/

इसका समर्थन करता है कई विशेषताओं में Variable Interpolation है।

+3

यही वह है! नाम = मार्टिन myKey = hi $ {name}! स्ट्रिंग परिणाम = नई गुण कॉन्फ़िगरेशन ("myFile.properties")। GetString ("myKey"); ====> "परिणाम" का मूल्य "हाय मार्टिन" है! –

12

क्या आप क्या करना चाहते जावा Properties class का उपयोग कर असंभव है का उपयोग करें।

संपत्ति कुंजी और मूल्य केवल स्ट्रिंग हैं। उनके लिए कोई प्रसंस्करण नहीं होता है, इसलिए आप किसी मान में किसी अन्य मान का संदर्भ नहीं दे सकते हैं।

+0

अजीब:

स्वरूपण के इस प्रकार के अन्य स्वरूपण विकल्प के रूप में Formatter द्वारा निर्दिष्ट के साथ भ्रमित नहीं होना चाहिए। एएनटी का उपयोग करके आप यह कर सकते हैं। जावा के साथ क्या हो रहा है? –

+3

एएनटी जावा गुणों के साथ कुछ लेना देना नहीं है। एएनटी में अंडर-द-हूड सामान की मेरी (सीमित) समझ यह है कि इसे पार्स किया गया है। जावा प्रॉपर्टी फाइलें केवल टेक्स्ट फाइलें होती हैं जिनमें स्ट्रिंग कुंजियां और स्ट्रिंग मान होते हैं जिन्हें स्मृति में लोड किया जा सकता है। –

+0

यह थोड़ी देर हो गया है क्योंकि मैंने स्रोत को देखा लेकिन मुझे लगता है कि चींटी इसके प्रॉपर्टी पार्सिंग के लिए org.apache.commons.configuration का उपयोग करती है। उस पर मुझे उद्धृत मत करो। – seth

1

चींटी फ़ाइलें स्क्रिप्ट हैं; गुण फ़ाइलें तारों की बाल्टी हैं।

गुण फ़ाइलों का प्राथमिक उद्देश्य अनुवाद करने योग्य पाठ के लिए स्ट्रिंग कंटेनर के रूप में कार्य करना है। आमतौर पर संसाधन बंडलों में प्रयुक्त प्रारूप स्ट्रिंग्स इंडेक्स-आधारित सिस्टम का उपयोग करती हैं। जब स्ट्रिंग का अनुवाद किया जाता है, तो जावा कोड को बदलने के बिना स्ट्रिंग के अनुवादित संस्करणों में पैरामीटर का क्रम बदला जा सकता है।

String what = "Hello"; 
String who = "Martin"; 
System.out.println(MessageFormat.format("{0}, {1}!", what, who)); 
System.out.println(MessageFormat.format("{1}, {0}!", what, who)); 

आउटपुट:

Hello, Martin! 
Martin, Hello! 

इस तरह उपयोग के मामलों के लिए, यह क्योंकि तार आमतौर पर आवेदन से डेटा की जरूरत है कोई मतलब नहीं होगा गुण कक्षा में कार्यक्षमता को संपुटित करने के लिए। प्रतिस्थापन करने के लिए MessageFormat वर्ग का उपयोग किया जा सकता है।

System.out.format("%s, %s!%n", what, who); 
संबंधित मुद्दे