Öncelikle C # 'daki numaralara daha aşina olduğumu ve java'daki numaraların oldukça dağınık olduğunu belirteceğim.
Gördüğünüz gibi, bir sonraki örneğimde @ enums bir switch deyimi kullanmaya çalışıyorum ama ne yaptığım önemli değil.
Aldığım hata:
Nitelikli vaka etiketi
SomeClass.AnotherClass.MyEnum.VALUE_A
, niteliksiz numaralandırma sabiti ile değiştirilmelidirVALUE_A
Şey, hatayı oldukça anlıyorum ama enum başka bir alt sınıfta bulunduğundan sadece VALUE_A yazamıyorum. Bu sorunu çözmenin bir yolu var mı? Peki neden Java'da oluyor?
//Main Class
public class SomeClass {
//Sub-Class
public static class AnotherClass {
public enum MyEnum {
VALUE_A, VALUE_B
}
public MyEnum myEnum;
}
public void someMethod() {
MyEnum enumExample //...
switch (enumExample) {
case AnotherClass.MyEnum.VALUE_A: { <-- error on this line
//..
break;
}
}
}
}
Enum
vardır derece bunların asmak aldıktan sonra kullanışlı - hepsi değil bir karışıklık. Diğer platformlarda görüldüğü gibi basit numaralardan (yalnızca etiketli bir tam sayı değeri) çok daha esnek ve pratiktirler. Oracle Eğiticisine bakın . Optimize edilmişSet
/Map
uygulamaları keşfedin :EnumSet
&EnumMap
.