logo

כיצד להמיר מחרוזת ל-Enum ב-Java?

Java enum הם סוגי נתונים רבי עוצמה המייצגים קבוצה קבועה של קבועים. הם משמשים בדרך כלל כדי לשרטט קבוצה מסוימת של ערכים שאובייקט יכול לקחת. לפעמים, ייתכן שתרצה להמיר איור מחרוזת לערך enum. בהקשר זה, נחקור אסטרטגיות מגוונות להמרת מחרוזת ל-enum ב-Java, ונציע לך תוכנית שלמה להבנה טובה יותר.

הבנת Enum ב-Java:

לפני שנצלול לתהליך ההמרה, בואו נסכם בקצרה את Java enum. ספירות, או בקיצור, הוצגו ב-Java 5 כדי לספק דרך מובנית יותר לייצוג ערכים קבועים. הצהרת enum מגדירה קבוצה קבועה של ערכים שמשתנה מסוג זה יכול לקחת. כל ערך ב-enum נקרא קבוע enum.

להלן דוגמה להצהרת מצוות:

 public enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } 

במקרה זה, יום הוא השם של ה-enum, ויש לו שבעה קבועים המייצגים את ימי השבוע. ל-Enum יכולים להיות גם שדות ושיטות נוספים, מה שהופך אותם לגמישים וחזקים יותר מערכי קבועים פשוטים.

המרת מחרוזת ל-Enum:

כאשר יש לך ייצוג מחרוזת וגם אתה רוצה להמיר אותו ל-enum, תוכל לבצע טקטיקות שונות בהתאם לדרישות שלך. כאן, נדבר על 3 שיטות נפוצות לפעולת המרה זו: השימוש בשיטת valueOf() , שימוש במיפוי מותאם אישית ושימוש בשיטת Enum.ValueOf() .

שיטה 1: שימוש בשיטת valueOf()

הדרך הישירה המקסימלית להמיר מחרוזת ל-enum היא בעזרת השימוש בטכניקת valueOf() הניתנת באמצעות ה-enum עצמו. גישה זו לוקחת את שם ה-enum עקבי כמחרוזת ומחזירה את ה-enum המתאים רגיל אם מתגלה. הנה דוגמה:

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 } } 

תְפוּקָה:

 FRIDAY 

בדוגמה זו, אנו ממירים את המחרוזת 'FRIDAY' ל-Day enum על ידי קריאה למתודה valueOf() . התוצאה היא הקבוע Day.FRIDAY enum, אשר מודפס לאחר מכן לקונסולה.

חשוב לציין שהמתודה valueOf() היא תלוית רישיות, ואם המחרוזת אינה תואמת לאף קבוע enum, ייזרק java.lang.IllegalArgumentException. כדי להתמודד עם זה, אתה יכול לעטוף את ההמרה בבלוק של try-catch כדי לטפל בחריג בחן.

שיטה 2: שימוש במיפוי מותאם אישית

במקרים מסוימים, ייתכן שיהיה עליך לבצע מיפוי מותאם אישית בין ייצוג המחרוזת לקבוע ה-enum. גישה זו שימושית כאשר ערכי המחרוזת אינם תואמים בדיוק לשמות הקבועים של ה-enum. הנה דוגמה:

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 } } 

תְפוּקָה:

 FRIDAY 

בדוגמה זו, ל-Day enum יש שדה נוסף שנקרא קיצור, המייצג ייצוג מחרוזת קצר יותר של היום. אנו מגדירים שיטה מותאמת אישית מ-Abbreviation() שמבצעת את ההמרה על סמך הקיצור. אם הקיצור תואם לכל קבוע enum, קבוע ה-enum המתאים מוחזר; אחרת, יוצא חריג.

שיטה 3: שימוש בשיטת Enum.valueOf()

השיטה השלישית כוללת שימוש בשיטת Enum.valueOf() שהיא שיטה למטרות כלליות להמרת מחרוזות לקבועי enum. הנה דוגמה:

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 } } 

תְפוּקָה:

 SUNDAY 

בדוגמה זו, אנו מעבירים את מחלקת ה-enum (Day.class) ואת ייצוג המחרוזת (dayString) למתודה Enum.valueOf() . הוא מחזיר את קבוע ה-enum התואם אם נמצא, או זורק IllegalArgumentException אם לא נמצא התאמה.

במאמר זה, בדקנו שיטות שונות להמרת מחרוזת ל-enum ב-Java. דנו בשימוש בשיטת valueOf(), יצירת מיפוי מותאם אישית ושימוש בשיטת Enum.valueOf() . בהתאם לדרישות שלך, אתה יכול לבחור את הגישה המתאימה ביותר. זכור לטפל בחריגים בעת שימוש בשיטת valueOf() ושקול מיפוי מותאם אישית כאשר ערכי המחרוזת אינם תואמים ישירות לשמות הקבועים enum.