2010-10-25 5 views
9

क्या मैं एक इंटरफ़ेस में public static final चर बना सकता हूं? क्या मैं इन फ़ाइलों में परिभाषित कुछ सामान्य निरंतर मान रख सकता हूं?जावा: क्या इंटरफ़ेस में परिभाषित स्थिर चर शामिल हो सकते हैं?

+0

क्या यह कुछ ऐसा नहीं है जो * कोशिश * करने के लिए तुच्छ है? आपके पास एक काम करने वाला कंपाइलर है, है ना? –

+0

मुझे खेद है, मुझे फिर से लिखना होगा। मैंने कोशिश की है और यह काम करता है। लेकिन मैं जानना चाहता था कि यह एक अच्छा अभ्यास है या नहीं। – kiki

+0

संभावित डुप्लिकेट [क्या कक्षाओं या इंटरफेस में स्थिरांक का संग्रह रखा जाना चाहिए?] (Http://stackoverflow.com/questions/1372991/should-a-collection-of-constants-be-placed-in-a- कक्षा-या-इंटरफ़ेस) –

उत्तर

14

हाँ, आप कर सकते हैं:

public interface Constants 
{ 
    public static final int ZERO = 0; 
} 

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

+0

तो फिर समाधान क्या है? इन स्थिरांक को परिभाषित करने के लिए बस एक और वर्ग परिभाषित करें? – kiki

+0

@kiki: यह स्थिति पर निर्भर करता है। कभी-कभी enums स्थिरांक के बजाय अच्छी तरह से काम करते हैं। कभी-कभी उन्हें एक प्राकृतिक मौजूदा इंटरफेस में रखना किसी और चीज के रूप में साफ होता है। कभी-कभी उन्हें कक्षा के साथ रखें जो उनसे सबसे अधिक दृढ़ता से संबंधित है। कभी-कभी एक नई कक्षा बनाते हैं। –

+1

यदि आप इंटरफ़ेस को केवल इंटरफ़ेस नाम से उपसर्ग करने से बचने के लिए इंटरफ़ेस को कार्यान्वित कर रहे हैं। –

1

हां, आप इंटरफेस में स्थिरांक रख सकते हैं। बीटीडब्ल्यू, इसे बहुत अच्छा अभ्यास नहीं माना जाता है।

1

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

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