আমার কাছে মনে হয় যে বুলিয়ান ক্লাসটি এনাম হিসাবে বাস্তবায়নের জন্য আদর্শ প্রার্থী।
উত্স কোডের দিকে তাকালে, ক্লাসের বেশিরভাগটি স্থিতিশীল পদ্ধতি যা একটি এনামে অপরিবর্তিত রাখা যেতে পারে, বাকিগুলি এনুম হিসাবে অনেক সহজ হয়ে যায়। মূল তুলনা (মন্তব্য এবং স্থির পদ্ধতি সরানো):
public final class Boolean implements java.io.Serializable,
Comparable<Boolean>
{
public static final Boolean TRUE = new Boolean(true);
public static final Boolean FALSE = new Boolean(false);
private final boolean value;
public Boolean(boolean value) {
this.value = value;
}
public Boolean(String s) {
this(toBoolean(s));
}
public boolean booleanValue() {
return value;
}
public String toString() {
return value ? "true" : "false";
}
public int hashCode() {
return value ? 1231 : 1237;
}
public boolean equals(Object obj) {
if (obj instanceof Boolean) {
return value == ((Boolean)obj).booleanValue();
}
return false;
}
public int compareTo(Boolean b) {
return compare(this.value, b.value);
}
}
একটি এনাম সংস্করণ সহ:
public enum Boolean implements Comparable<Boolean>
{
FALSE(false), TRUE(true);
private Boolean(boolean value) {
this.value = value;
}
private final boolean value;
public boolean booleanValue() {
return value;
}
public String toString() {
return value ? "true" : "false";
}
}
বুলিয়ান এনাম হয়ে উঠতে পারার কোন কারণ নেই?
যদি এটি সমান () পদ্ধতিটিকে ওভাররাইড করার জন্য সান কোড হয় তবে দুটি মানের মানগুলির তুলনা করার আগে এটির রেফারেন্সের তুলনা করার একটি খুব মৌলিক চেকটি অনুপস্থিত। সমান () পদ্ধতিটি এমনভাবে হওয়া উচিত বলে আমি মনে করি:
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj instanceof Boolean) {
return value == ((Boolean)obj).booleanValue();
}
return false;
}
if
) তবে ধারণাবাদী / ধরণের তত্ত্বের দিক থেকে বুলিয়ান এবং এনামগুলি উভয়ই সমষ্টিগুলির উদাহরণ, সুতরাং আমি মনে করি তারা কেন করেন নি তা জিজ্ঞাসা করা ন্যায়সঙ্গত তাদের মধ্যে ব্যবধান পূরণ করতে পারব না।
valueOf(String)
(যা এনামের মান ওফের সাথে সাংঘর্ষিক হতে পারে) বাস্তবায়ন এবং যে জাদুটিকে getBoolean
এটিকে তৈরি করতে পারে তা বাস্তবায়নের হাতছাড়া করেছেন বলে মনে হয় যাতে Boolean.valueOf("yes")
মিথ্যা পরিবর্তে সত্যে ফিরে আসে। উভয়ই 1.0 টি অনুচ্ছেদের অংশ এবং উপযুক্ত পিছনের সামঞ্জস্যের প্রয়োজন হবে।