আমার জাভা কোড এবং একটি ডেটাবেস বা ক্লায়েন্ট অ্যাপ্লিকেশনগুলির মধ্যে এনামগুলি পাঠানো, আমি প্রায়শই স্ট্রিং হিসাবে এনাম মানগুলি পড়ি এবং লিখি। toString()
স্ট্রিংগুলি সংহত করার সময় স্পষ্টতই বলা হয়। কিছু এনামে টু স্ট্রিং () -কে ওভাররাইড করার অর্থ হ'ল কখনও কখনও আমি ঠিক করতে পারি
"<input type='checkbox' value='" + MY_CONST1 + "'>"
এবং মাঝে মাঝে আমাকে কল করতে মনে পড়ে
"<input type='checkbox' value='" + MY_CONST1.name() + "'>"
যা ত্রুটির দিকে পরিচালিত করে, তাই আমি আর এটি করি না। প্রকৃতপক্ষে, আমি এনামের কোনও পদ্ধতি ওভাররাইড করি না কারণ আপনি যদি তাদের যথেষ্ট ক্লায়েন্ট কোডে ফেলে দেন তবে আপনি শেষ পর্যন্ত কারও প্রত্যাশা ভঙ্গ করবেন।
মত আপনার নিজের নতুন পদ্ধতি জনপ্রিয় করে তুলুন, public String text()
বা toEnglish()
বা যাই হোক না কেন।
এখানে একটি ছোট সহায়ক ফাংশন যা আপনার উপরের মতো প্রচুর এনাম থাকলে আপনার কিছু টাইপিং সংরক্ষণ করতে পারে:
public static String ucFirstLowerRest(String s) {
if ( (s == null) || (s.length() < 1) ) {
return s;
} else if (s.length() == 1) {
return s.toUpperCase();
} else {
return s.substring(0, 1).toUpperCase() + s.substring(1).toLowerCase();
}
}
.ToUpperCase () বা .toLowerCase () কল করা সর্বদা সহজ তবে মিশ্র-কেস ফিরে পাওয়া কঠিন হতে পারে। রঙটি বিবেচনা করুন, "ব্লু ডি ফ্রান্স"। ফ্রান্স সর্বদা মূলধনীভূত হয়, তাই আপনি যদি এটিকে চালিত করেন তবে আপনি আপনার এনামের কাছে একটি পাঠ্যলয় () পদ্ধতি যুক্ত করতে চাইতে পারেন। আপনি যখন কোনও বাক্য শুরুর সময় এই পাঠ্যটি ব্যবহার করেন, বনাম একটি বাক্যটির মাঝামাঝি, বনাম একটি শিরোনামে, আপনি দেখতে পারেন যে কীভাবে একটি একক toString()
পদ্ধতি সংক্ষিপ্ত হতে চলেছে। এবং এটি জাভা শনাক্তকারীগুলিতে অবৈধ এমন অক্ষরগুলিকেও স্পর্শ করে না বা টাইপ করতে ব্যথা হয় কারণ এগুলি স্ট্যান্ডার্ড কীবোর্ডগুলিতে উপস্থাপন করা হয় নি, বা অক্ষরগুলির ক্ষেত্রে (কানজি ইত্যাদি) নেই।
enum Color {
BLEU_DE_FRANCE {
@Override public String textTc() { return "Bleu De France"; }
@Override public String textLc() { return "bleu de France"; }
}
CAFE_NOIR {
@Override public String textTc() { return "Café Noir"; }
}
RED,
YELLOW,
GREEN;
// The text in title case
private final String textTc;
private Color() {
textTc = ucFirstLowerRest(this.toString());
}
// Title case
public String textTc() { return textTc; }
// For the middle of a sentence
public String textLc() { return textTc().toLowerCase(); }
// For the start of a sentence
public String textUcFirst() {
String lc = textLc();
return lc.substring(0, 1).toUpperCase() + lc.substring(1);
}
}
এগুলি সঠিকভাবে ব্যবহার করা এত কঠিন নয়:
IllegalStateException(color1.textUcFirst() + " clashes horribly with " +
color2.textLc() + "!")
আশা করি এটি প্রমাণ করে যে কেন মিক্সড-কেস এনাম মান ব্যবহার করা আপনাকে হতাশ করবে। আন্ডারস্কোর এনাম কনস্ট্যান্ট সহ অল-ক্যাপগুলি রাখার একটি শেষ কারণ হ'ল এটি করা সর্বনিম্ন বিস্ময়ের নীতি অনুসরণ করে। লোকেরা এটির প্রত্যাশা করে, সুতরাং আপনি যদি অন্যরকম কিছু করেন তবে আপনাকে সর্বদা নিজেকে ব্যাখ্যা করাতে হবে, বা আপনার কোডটির অপব্যবহার করা লোকদের সাথে ডিল করতে হবে।