Java enum, sabit bir sabit kümesini temsil eden güçlü veri türleridir. Genellikle bir nesnenin alabileceği belirli bir değer kümesinin ana hatlarını çizmek için kullanılırlar. Bazen bir dize gösterimini bir numaralandırma değerine dönüştürmek isteyebilirsiniz. Bu bağlamda, Java'da bir dizeyi numaralandırmaya dönüştürmek için çeşitli stratejiler keşfedeceğiz ve daha iyi anlamanız için size eksiksiz bir program sunacağız.
Java'da Enum'u Anlamak:
Dönüştürme sürecine dalmadan önce Java enum'u kısaca özetleyelim. Numaralandırmalar veya kısaca numaralandırma, sabit değerleri temsil etmenin daha yapılandırılmış bir yolunu sağlamak için Java 5'te tanıtıldı. Enum bildirimi, o enum türündeki bir değişkenin alabileceği sabit bir değerler kümesini tanımlar. Bir numaralandırmadaki her değere numaralandırma sabiti denir.
İşte bir enum bildirimi örneği:
public enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }
Bu durumda Gün, numaralandırmanın adıdır ve haftanın günlerini temsil eden yedi sabite sahiptir. Enum ayrıca ek alanlara ve yöntemlere de sahip olabilir, bu da onları basit sabit değerlerden daha esnek ve güçlü kılar.
Bir String'i Enum'a Dönüştürmek:
Bir dize temsiliniz olduğunda ve onu bir numaralandırmaya dönüştürmek istediğinizde, gereksinimlerinize göre farklı taktikler uygulayabilirsiniz. Burada, bu dönüşümü gerçekleştirmek için 3 yaygın yöntemden bahsedeceğiz: valueOf() yönteminin kullanımı, özel bir eşlemenin kullanımı ve Enum.ValueOf() yönteminin kullanımı.
Yöntem 1: valueOf() Yöntemini Kullanma
Bir dizgeyi numaralandırmaya dönüştürmenin maksimum doğrudan yolu, numaralandırmanın kendisi aracılığıyla sağlanan valueOf() tekniğinin kullanılmasıdır. Bu yaklaşım, numaralandırmanın adını bir dize olarak tutarlı olarak alır ve keşfedilirse karşılık gelen numaralandırmayı düzenli olarak döndürür. İşte bir örnek:
StringToEnumExample.java
public class StringToEnumExample { public enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } public static void main(String[] args) { String dayString = 'FRIDAY'; Day day = Day.valueOf(dayString); System.out.println(day); // Output: FRIDAY } }
Çıktı:
FRIDAY
Bu örnekte, 'FRIDAY' dizesini, valueOf() yöntemini çağırarak Gün numaralandırmasına dönüştürüyoruz. Sonuç, daha sonra konsola yazdırılan Day.FRIDAY numaralandırma sabitidir.
valueOf() yönteminin büyük/küçük harfe duyarlı olduğunu ve dizenin herhangi bir enum sabitiyle eşleşmemesi durumunda bir Java.lang.IllegalArgumentException oluşturulacağını unutmamak önemlidir. Bunu halletmek için, istisnayı düzgün bir şekilde ele almak üzere dönüşümü bir try-catch bloğuna sarabilirsiniz.
Yöntem 2: Özel Eşleme Kullanma
Bazı durumlarda dize gösterimi ile numaralandırma sabiti arasında özel bir eşleme yapmanız gerekebilir. Bu yaklaşım, dize değerleri enum sabit adlarıyla tam olarak eşleşmediğinde kullanışlıdır. İşte bir örnek:
StringToEnumExample.java
public class StringToEnumExample { // Define the Day enum with associated abbreviations public enum Day { MONDAY('Mon'), TUESDAY('Tue'), WEDNESDAY('Wed'), THURSDAY('Thu'), FRIDAY('Fri'), SATURDAY('Sat'), SUNDAY('Sun'); // Private field to store the abbreviation for each day private final String abbreviation; // Constructor to initialize the abbreviation for each enum constant Day(String abbreviation) { this.abbreviation = abbreviation; } // Getter method to retrieve the abbreviation for a specific day public String getAbbreviation() { return abbreviation; } // Custom method to convert an abbreviation string to the corresponding enum constant public static Day fromAbbreviation(String abbreviation) { for (Day day : Day.values()) { if (day.getAbbreviation().equalsIgnoreCase(abbreviation)) { return day; } } // If no match is found, throw an IllegalArgumentException throw new IllegalArgumentException('Invalid abbreviation: ' + abbreviation); } } public static void main(String[] args) { String dayString = 'Fri'; // Convert the abbreviation string to the corresponding Day enum constant Day day = Day.fromAbbreviation(dayString); System.out.println(day); // Output: FRIDAY } }
Çıktı:
FRIDAY
Bu örnekte, Gün sıralamasında kısaltma adı verilen ve günün daha kısa dize temsilini temsil eden ek bir alan bulunur. Kısaltmaya dayalı olarak dönüşümü gerçekleştiren Abbreviation()'dan özel bir yöntem tanımlarız. Kısaltma herhangi bir numaralandırma sabitiyle eşleşiyorsa karşılık gelen numaralandırma sabiti döndürülür; aksi halde bir istisna atılır.
Yöntem 3: Enum.valueOf() Yöntemini Kullanma
Üçüncü yöntem, dizeleri enum sabitlerine dönüştürmek için genel amaçlı bir yöntem olan Enum.valueOf() yönteminin kullanılmasını içerir. İşte bir örnek:
StringToEnumExample.java
public class StringToEnumExample { // Define the Day enum with seven constants representing the days of the week public enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } public static void main(String[] args) { // Define the string representation of the day String dayString = 'SUNDAY'; // Convert the string to the corresponding Day enum constant using Enum.valueOf() Day day = Enum.valueOf(Day.class, dayString); // Print the value of the day System.out.println(day); // Output: SUNDAY } }
Çıktı:
SUNDAY
Bu örnekte, enum sınıfını (Day.class) ve dize gösterimini (dayString) Enum.valueOf() yöntemine aktarıyoruz. Bulunursa karşılık gelen enum sabitini döndürür veya eşleşme bulunmazsa IllegalArgumentException atar.
Bu makalede, Java'da bir dizeyi numaralandırmaya dönüştürmenin farklı yöntemlerini araştırdık. valueOf() yöntemini kullanmayı, özel bir eşleme oluşturmayı ve Enum.valueOf() yöntemini kullanmayı tartıştık. Gereksinimlerinize bağlı olarak en uygun yaklaşımı seçebilirsiniz. valueOf() yöntemini kullanırken istisnaları ele almayı unutmayın ve dize değerleri, enum sabit adlarıyla doğrudan eşleşmediğinde özel bir eşleme yapmayı düşünün.