2013-03-08 21 views
5

Soru zaten yanıtladı. Teşekkürler beyler.Enumların Java'da ayarlayıcılara izin veriliyor mu?

Ben bir numaram var ve Dizeleri parametrelerine sahip. Bu değişkenler için ayarlayıcılarım var mı? Yapmam gereken izin

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

private final String letter; 

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

Am: alanına final olarak işaretlendiği için

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

Hangi programlama dilleri? Bize atıfta bulunduğunuz kodun temsili bir örneğini gösterin. –

+0

Herhangi bir programlama dili kullanıyor musunuz? – Guffa

+0

Java kullanıyorum. – user2149780

cevap

2

Bu işe yaramaz. Prensip olarak, enumların değişebilir alanlara sahip olmasını önleyen hiçbir şey yoktur. Ancak, bu hiç değilse iyi bir fikir.

+0

Ve bu iyi bir fikir değil çünkü sette ayarladığınız değer tüm enum örnekleri arasında paylaşılacak ... – ACV

+0

Enum sabit başına yalnızca bir örnek olduğu için, Bu değere yapılan tüm referanslarda alanın değeri paylaşılır. – Taymon

7

Bunu ayarlanabilir olabilmesi için alanın final değiştirici kaldırmak gerekir:

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

ancak genellikle tavsiye edilmez bir enum değişken bir devlet olması.

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

Güncelleştirme: Enum türlerinde ayarlayıcılar olması mümkündür. çeteleler

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 
} 

}

0

her zaman nihai olarak değişkenleri bildirmek için iyi bir fikirdir. Yukarıdaki örnekte yapılmadığından, değeri başka bir şeye ayarlayabiliriz.

İlgili konular