2010-10-12 12 views
6

मैं एक स्थिर चर को एक पैकेज में सभी वर्गों के लिए आम होना चाहता हूं। क्या कोई तरीका है कि मैं इसे एक परिभाषा के साथ इंटरफ़ेस बनाने के बिना कर सकता हूं, और प्रत्येक वर्ग को कार्यान्वित कर सकता हूं?पैकेज में सभी वर्गों के लिए मेरे पास स्थिर चर सामान्य कैसे हो सकता है?

उत्तर

8

जावा में, सभी स्थिरांकों को एक प्रकार (कक्षा या इंटरफ़ेस) में रहना पड़ता है। लेकिन आपको अंदर घोषित निरंतर उपयोग करने के लिए एक इंटरफ़ेस को लागू करने की आवश्यकता नहीं है।

आप अपने पैकेज में कुछ इस तरह रख कर की कोशिश कर सकते हैं: इस तरह इसे का उपयोग करें, तो

interface Constants { 

    static final String CONSTANT = "CONTANT"; 

} 

और:

String myVar = Constants.CONSTANT; 

इस तरह, आप अभी भी अपने इंटरफेस है, लेकिन कोई कक्षाएं इसे लागू करो।

+1

इंटरफेस के शरीर में प्रत्येक क्षेत्र की घोषणा पूरी तरह से सार्वजनिक, स्थैतिक और अंतिम है। –

+7

प्रभावी जावा, आइटम 1 9 "इंटरफेस का उपयोग केवल परिभाषित करने के लिए करें" इंटरफेस के इस उपयोग के खिलाफ स्पष्ट रूप से अनुशंसा करता है। यदि संभव हो तो स्थिरांक, या enums के लिए कक्षाओं का उपयोग करें –

+0

@seanizer, क्या आप कृपया मुझे भेज सकते हैं कि मेरी मेल आईडी मेरे प्रोफाइल आईडी के साथ है। –

0

मुझे एक संपत्ति फ़ाइल में प्रवेश के लिए एक अच्छा उम्मीदवार बनना पसंद है।

0

आप उस पैकेज में प्रत्येक इंप्रेशन के लिए बेस क्लास के रूप में सेवा करने के लिए एक अमूर्त कक्षा का उपयोग कर सकते हैं।

0

आप इस चर के साथ एक विशेष (स्थिर) कक्षा बना सकते हैं। बाद में आप अन्य स्थिरांक जोड़ सकते हैं या जो भी आपको उस कक्षा में चाहिए।

5

आम तौर पर अनुप्रयोगों में "स्थिरांक" वर्ग या इंटरफ़ेस होता है जो सभी स्थिरांक रखता है।

मैं आम तौर पर तार्किक कक्षाओं में स्थिरांक समूह करना चाहता हूं। उदाहरण के लिए कर्मचारियों के दो प्रकार के हो सकते हैं, नियमित रूप से और अनुबंध:

class EmployeeType 
{ 
    public static final String REGULAR = "regular"; 
    public static final String CONTRACT = "contract"; 
} 

और के रूप में EmployeeType.REGULAR

इसका इस्तेमाल स्थिरांक इस तरह से वर्गीकृत किया नहीं जा सकता है, एक अलग वर्ग/इंटरफेस इनमें धारण करने के लिए है।

class Constants 
{ 
    public static final String APPLICATION_DOMAIN = 'domain'; 
} 

आप विस्तार की जरूरत नहीं है/मानों का उपयोग कर इस वर्ग के इंटरफ़ेस को लागू। स्थिरांक आम तौर पर public static final घोषित किया जाएगा, तो आप उन तक पहुँच सकते सीधे: Constants.APPLICATION_DOMAIN

2

उपयोग एक पैकेज निजी वर्ग:

int val = Constants.MY_VALUE; 
:

class Constants{ 

    public static final int MY_VALUE = 1234; 

} 

यह केवल एक ही पैकेज से वर्गों द्वारा पहुँचा जा सकता है

1

आप विभिन्न तरीकों से ऐसा कर सकते हैं:

  • एक तरीका (जैसा कि यहां बताया गया है) एक वैश्विक स्थिर इंटरफ़ेस बनाना है और प्रत्येक स्थिरांक के public static final गुण हैं।
  • गुण फ़ाइल बनाएं। गुण फ़ाइल होने के बाद, आपके पास एक महत्वपूर्ण मूल्य जोड़ी होगी (= ऑपरेटर द्वारा अलग) प्रत्येक को एक नई लाइन पर घोषित किया जाएगा। गुण फ़ाइल बनाने और उपयोग करने के तरीके पर tutorial यहां दिया गया है।
संबंधित मुद्दे