2010-12-04 22 views
9

Uygulamamın String türünde anahtar durumu bildirimi olması gerekiyordu.Java'da anahtar (java.lang.Object) var mı?

Object list1 = "list1"; 
    Object list2 = "list2"; 
    Object list3 = "list3"; 

    Object option = "list1"; 
    switch (option) { 
     case list1: // Do something 
     case list2: // Do something 
     case list3: // Do something 
     default: // Do something 
    } 

o mümkün mü:

böyle bir şey gerekiyor?

DÜZENLEME:

daha iyi n koşulları yerine if ve else ile gidiş için switch case kullanımı var mı? Lütfen buna yorum yapın?

+0

Ayrıca polimorfizm kullanabilirsiniz: http://stackoverflow.com/questions/1425659/alternative-to-switch-case-in-java/1425684#1425684 – OscarRyz

cevap

11

Dizeleri açtığınız için, dizelerin derleme zamanında bilineceğini varsayalım. Bu durumda bir enum kullanabilirsiniz.

public enum MyStrings{ 

     LIST1, LIST2 
    } 

Sonra

switch(MyStrings.valueOf(option)){ 

     case LIST1: do something; break; 
     //etc. 
    } 
+0

Teşekkürler dostum :) yararlı. lütfen sorudaki güncellemeye bakın. –

3

bu soruya bakın: Why can't I switch on a String?

anda desteklenen, ancak 7.

Düzenleme Java oluşturması beklenmemektedir : aslında sadece String s, herhangi Object s

Belki görünüyor Her nesne, anahtar deyimine koymaya çalıştığınız mantığı içeren bir yöntemi uygulamalıdır?

0

Hayır, bunu yapamazsınız (bunu deneyin ve öğrenin). Ancak bunu isterseniz, belki HashMap gibi bir Harita sizin amaçlarınıza daha uygun olacaktır.

0

Hayır, HashMap gibi diğer koleksiyonları kullanın veya aynısını yapmak dizi endeksleri kullanmak elemanlardan oluşan bir dizi oluşturmak ve JDK ayında endekste

0

Anahtar, Str kontrolü için desteklenebilir ing, Tamsayı ve diğer ilkel veri türleri, ancak nesne karşılaştırmasında başarılı değildir.

İlgili konular