Sobes.tech
Junior

შესაძლებელია თუ არა სტრინგების გამოყენება Java-ს switch კონსტრუქციაში?

sobes.tech AI

პასუხი AI-სგან

ඔව්. Java 7 සිට ආරම්භව, switch ප්‍රකාශනයේ String වර්ගයේ වස්තු භාවිතා කළ හැක.

// String භාවිතා කිරීමේ උදාහරණයක්
String status = "ACTIVE";
switch (status) {
    case "ACTIVE":
        System.out.println("තත්ත්වය: සක්‍රීය");
        break;
    case "PENDING":
        System.out.println("තත්ත්වය: ඉන්තිරිය");
        break;
    case "DELETED":
        System.out.println("තත්ත්වය: මකන ලදි");
        break;
    default:
        System.out.println("අනෙකුත් තත්ත්වයක්");
}

switch තුළ string භාවිතා කිරීමේදී වැදගත් කරුණු:

  • String සසඳීම equals() ක්‍රමය භාවිතා කර සිදු වේ, එය ප්‍රාථමික වර්ග සසඳීමට වඩා කාර්යක්ෂම නොවේ.
  • case තුළ හෝ switch හි අගය null නම්, NullPointerException එකක් එයි. එවැනි අවස්ථා switch මූලින් හෝ default බ්ලොක් තුළ සැලකිය යුතුය.
  • case තුළ string ස්ථිරයන් විය යුතුය.
  • අකුරු විශේෂත්වය වැදගත් වේ. "Active" සහ "active" වෙනස් වේ.

switch තුළ string භාවිතා නොකරන්නට විකල්ප:

  • if-else if: ඉතා පැහැදිලි විකල්පය.
  • Enum: සීමිත සංඛ්‍යාත අගයන් සඳහා වඩාත් සුදුසු. වර්ග ආරක්ෂාව සහ කේත කළමනාකරණය වඩා හොඳ කරයි.
// Enum භාවිතා කිරීමේ උදාහරණයක්
public enum Status {
    ACTIVE, PENDING, DELETED
}

// ...

Status currentStatus = Status.ACTIVE;
switch (currentStatus) {
    case ACTIVE:
        System.out.println("තත්ත්වය: සක්‍රීය");
        break;
    case PENDING:
        System.out.println("තත්ත්වය: ඉන්තිරිය");
        break;
    case DELETED:
        System.out.println("තත්ත්වය: මකන ලදි");
        break;
    default:
        System.out.println("අනෙකුත් තත්ත්වයක්"); // සාමාන්‍යයෙන් අවශ්‍ය නොවේ
}
  • Map: String සහ ක්‍රියා මැද ඇති සම්බන්ධතා වඩා ගතික හෝ විශාල නම් ප්‍රයෝජනවත් විය හැක.
// Map භාවිතා කිරීමේ උදාහරණයක්
Map<String, Runnable> actions = new HashMap<>();
actions.put("ACTIVE", () -> System.out.println("තත්ත්වය: සක්‍රීය")); 
actions.put("PENDING", () -> System.out.println("තත්ත්වය: ඉන්තිරිය")); 
actions.put("DELETED", () -> System.out.println("තත්ත්වය: මකන ලදි"));

// ...

String status = "ACTIVE";
actions.getOrDefault(status, () -> System.out.println("අනෙකුත් තත්ත්වයක්")).run();

මෙම ආකෘති අතර තේරීම විශේෂ කාර්යය, කේතය කියවීමේ පහසුව, සහ වර්ග ආරක්ෂාව අවශ්‍යතාවය මත පදනම් වේ. සීමිත හා ස්ථිර string අගයන් සඳහා Enum සාමාන්‍යයෙන් හොඳම විසඳුම වේ.