2013-03-08 5 views
5

प्रश्न का उत्तर पहले से ही दिया गया है। धन्यवाद दोस्तों।क्या जावा में जावा में सेटर्स रखने की इजाजत है?

मेरे पास एक enum है और इसमें स्ट्रिंग्स के पैरामीटर हैं। क्या मुझे इन चर के लिए सेटर्स रखने की अनुमति है?

public enum Blah { 
    Monday("a"), Tuesday("b"); 
} 

private final String letter; 

Blah(String letter){ 
    this.letter = letter; 
} 

Am मैं ऐसा करने की अनुमति:

public String setLetter(String letter){ 
    this.letter = letter; 
} 
+1

प्रोग्रामिंग भाषा क्या है? हमें उस कोड का एक प्रतिनिधि उदाहरण दिखाएं जिसका आप उल्लेख कर रहे हैं। –

+0

क्या आप किसी भी विशेष प्रोग्रामिंग भाषा का उपयोग कर रहे हैं? – Guffa

+0

मैं जावा का उपयोग कर रहा हूँ। – user2149780

उत्तर

2

यह काम नहीं करता क्योंकि क्षेत्र final के रूप में चिह्नित किया गया है।

सिद्धांत रूप में, म्यूट करने योग्य क्षेत्रों से enums को रोकने के लिए कुछ भी नहीं है। हालांकि, यह शायद ही कभी एक अच्छा विचार है।

+0

को इंगित किया है और यह एक अच्छा विचार नहीं है क्योंकि आप सेटर में सेट मान को सभी enum उदाहरणों में साझा किया जाएगा ... – ACV

+0

ऐसा इसलिए है क्योंकि प्रतिवर्ष स्थिरता केवल एक उदाहरण है, इसलिए फ़ील्ड का मान उस उदाहरण के सभी संदर्भों में साझा किया जाता है। – Taymon

7

आप क्रम में क्षेत्र के final संशोधक दूर करने के लिए यह settable होने के लिए की जरूरत है:

public enum Blah { 
    Monday("a"), Tuesday("b"); 


    private String letter; 

    private Blah(String letter){ 
     this.letter = letter; 
    } 

    public void setLetter(String letter){ 
     this.letter = letter; 
    } 
} 

http://ideone.com/QAZHol

एक enum में परिवर्तनशील राज्य होने आम तौर पर अनुशंसित नहीं है तथापि,।

0
public class EnumExample { 
     public enum Blah { 
     Monday("a"), Tuesday("b"); 


     private String letter; 

     private Blah(String letter){ 
      this.letter = letter; 
     } 

     public void setLetter(String letter){ 
      this.letter = letter; 
     } 

     public String getLetter(){ 
      return letter; 
     } 
    } 

     public static void main (String[] args)   { 
      System.out.println("The Value of Monday is "+ Blah.Monday.getLetter());//prints a 
      System.out.println("The Value of Tuesday is "+Blah.Tuesday.getLetter());//prints b 
     } 
} 
2

अपडेट: एनम प्रकारों में सेटर्स होना संभव है।

public class Main { 

public enum Account { 

    ACCOUNT("NAME"); 

    private String name; 

    private Account(String name){ 
     this.name = name; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 
} 

public static void main(String[] args) { 
    System.out.println(Account.ACCOUNT.getName()); // print NAME 
    Account.ACCOUNT.setName("NEW"); 
    System.out.println(Account.ACCOUNT.getName()); // print NEW 
} 

} enums में

0

यह हमेशा एक अच्छा विचार अंतिम रूप चर घोषित करने के लिए है। चूंकि यह उपर्युक्त उदाहरण में नहीं किया गया है, इसलिए हम मूल्य को किसी अन्य चीज़ पर सेट करने में सक्षम हैं।

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