Hendek dize temsilini yardımcı olabilir ve gerçek enum yapın.
public enum DataType {
STRING,
BOOLEAN,
INTEGER;
}
Hiç enum olup olmadığını belirlemek için önceki String dataType
değişkenin dize karşılaştırma yapmak zorunda önlemek Bu şekilde. Bir kenara göre, dataType
üye değişkeni için geçerli olmayan bir değer atamayı imkansız kılar ve enumlar sınıf yükleyicide singleton olarak garanti edildiğinden, bellek izi de kaydedilir.
Kodunuzu değiştirmek için kodunuzu değiştirme çabalarına değer. Ancak, yapamayacağınızı varsayarak, en azından açıklamaları kullanmak için ek açıklamaları değiştirebilirsiniz.
@ValidateString(DataType.STRING) String dataType;
ve
ValidateString
açıklama en azından kodun kalanı olmasa bile, çeteleler yararlanma alır bu şekilde.
Artık bir numaralandırma kullanamayacağınız son derece nadir şansta, her kabul edilen değeri eşleştiren statik genel tam sayıları ayarlayabilirsiniz. Ek açıklamalarda parametresi için bir dize kullanırsanız
public class DataType {
public static final int STRING = 1;
public static final int BOOLEAN = 2;
...
}
Ancak, sadece belirli değerler izin verildiğini belirtmek için türü içine uzanan bir tür kontrol sistemi yok.
public int<values=[1,3,5,7..9]> oddInt;
Eğer
oddInt = 4;
Bu neden önemlidir atamaya çalıştık ederseniz bir hata olacaktır: Başka bir deyişle, Java böyle bir şey yapmak yeteneğinden mahrum? Çünkü normal Java için geçerli değilse, normal Java sınıflarında uygulanan numaralandırma için geçerli olamaz.
gerçek "iş" ihtiyaç nedir ÇOK KOLAY? Bu çözmeye çalışan nedir? (Gerçekten de bu tam olarak bir şey yapmanıza gerek yok - bu sadece bir şey yapmanın bir yoludur) – Bohemian