2012-09-20 11 views
27

केवल स्थिर होने एक जावा फ़ाइल घोषित करने के लिए सबसे अच्छा तरीका क्या है (एक जावा केवल स्थिरांक होने फ़ाइल बनाएँ)?जावा निरंतर उदाहरण

public interface DeclareConstants 
{ 
    String constant = "Test"; 
} 

या

public abstract class DeclareConstants 
{ 
    public static final String constant = "Test"; 
} 
+6

निरंतर चर, क्या यह ऑक्सीमोरोन नहीं है? –

+1

@PeterWalser तो एक * स्थिर * चर रहा है। : डी तकनीकी रूप से स्थैतिक मतलब गैर-बदलते से कुछ अलग है लेकिन फिर भी ... –

उत्तर

54

न तो एक। का प्रयोग करें final class for Constants उन्हें public static final और स्थिर आयात सभी स्थिरांक के रूप में घोषित जहां आवश्यक।

public final class Constants { 

    private Constants() { 
      // restrict instantiation 
    } 

    public static final double PI = 3.14159; 
    public static final double PLANCK_CONSTANT = 6.62606896e-34; 
} 

उपयोग:

import static Constants.PLANCK_CONSTANT; 
import static Constants.PI;//import static Constants.*; 

public class Calculations { 

     public double getReducedPlanckConstant() { 
       return PLANCK_CONSTANT/(2 * PI); 
     } 
} 

देखें विकी लिंक: http://en.wikipedia.org/wiki/Constant_interface

+1

इसे +1 करें। एक इंटरफेस का उपयोग वास्तव में एक विरोधी पैटर्न है। –

+0

@ गिल्बर्टो: विकी लिंक बहुत अच्छी तरह से वर्णन करता है :) –

+0

जब आप इंटरफ़ेस को कार्यान्वित करते हैं तो यह केवल एक एंटीपाटर बन जाता है। यदि आप इस उपयोग को लागू करने के बारे में भरोसेमंद हैं, तो वर्ग के लिए निजी अंतिम कन्स्ट्रक्टर को न भूलें। – millimoose

2

- एक public static final साथ Classक्षेत्रों बनाएँ।

- और फिर आप इन क्षेत्रों को Class_Name.Field_Name का उपयोग करके किसी भी कक्षा से एक्सेस कर सकते हैं।

- आप class रूप final घोषणा कर सकते हैं ताकि classनहीं बढ़ाई जा सकती (इनहेरिट) और संशोधित ....

+1

के लिए क्या देख रहा था आपका स्वागत है ... –

1

दोनों मान्य हैं, लेकिन मैं सामान्य रूप से इंटरफेस चुनें। यदि कोई कार्यान्वयन नहीं है तो एक वर्ग (सार या नहीं) की आवश्यकता नहीं है।

एक सलाह के रूप में, बुद्धिमानी से अपने स्थिरांक के स्थान चयन करने की कोशिश, वे अपने बाहरी अनुबंध का हिस्सा हैं। एक फ़ाइल में प्रत्येक एकल स्थिर मत डालो।

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

कभी-कभी कोई गणन स्थिरांक (जावा 5) के लिए एक अच्छा विकल्प है, नज़र रखना पर: http://docs.oracle.com/javase/1.5.0/docs/guide/language/enums.html

+1

आपका स्वागत है। मुझे वास्तव में अंतिम श्रेणी समाधान पसंद है !! (डमी सबूत) –

0

यह सवाल पुराना है। लेकिन मैं एक अन्य दृष्टिकोण का उल्लेख करना चाहता हूं। निरंतर मूल्यों घोषणा के लिए Enums का उपयोग करना। नंदकुमार Tekale के जवाब के आधार पर, Enum नीचे के रूप में इस्तेमाल किया जा सकता:

Enum:

public enum Planck { 
    REDUCED(); 
    public static final double PLANCK_CONSTANT = 6.62606896e-34; 
    public static final double PI = 3.14159; 
    public final double REDUCED_PLANCK_CONSTANT; 

    Planck() { 
     this.REDUCED_PLANCK_CONSTANT = PLANCK_CONSTANT/(2 * PI); 
    } 

    public double getValue() { 
     return REDUCED_PLANCK_CONSTANT; 
    } 
} 

ग्राहक वर्ग:

public class PlanckClient { 

    public static void main(String[] args) { 
     System.out.println(getReducedPlanckConstant()); 
     // or using Enum itself as below: 
     System.out.println(Planck.REDUCED.getValue()); 
    } 

    public static double getReducedPlanckConstant() { 
     return Planck.PLANCK_CONSTANT/(2 * Planck.PI); 
    } 

} 

संदर्भ: निरंतर क्षेत्रों की घोषणा के लिए एम्स का उपयोग यहोशू ब्लोच ने अपने प्रभावी में सुझाव दिया है जावा बुक

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