හැකි ==
මත භාවිතා කල enum
?
ඔව්: සිද්ධි ==
සංසන්දනය කිරීම සඳහා භාවිතා කිරීමට ඉඩ සලසන තද නිදර්ශන පාලක එනූම්ස් සතුව ඇත . භාෂා පිරිවිතරයෙන් සපයන සහතිකය මෙන්න (මා අවධාරණය කිරීම):
එනූම් වර්ගයට එහි එනුම් නියතයන් මගින් අර්ථ දක්වා ඇති අවස්ථා හැර වෙනත් අවස්ථා නොමැත.
එනූම් වර්ගයක් පැහැදිලිව ක්ෂණිකව තහවුරු කිරීමට උත්සාහ කිරීම සම්පාදක කාල දෝෂයකි. මෙම final clone
පාලන ක්රමය Enum
බව සහතික enum
නියත කවදාවත් කරගත යුතු වේ, හා අනු අවස්ථා කවදාවත් deserialization ප්රතිඵලයක් ලෙස නිර්මාණය වී ඇති serialization යාන්ත්රණයක් බවටද සහතික විසින් විශේෂ ප්රතිකාර ලබා ඇත. එනූම් වර්ග පරාවර්තකව ස්ථාපනය කිරීම තහනම්ය. මෙම කරුණු හතරම එක්ව නියතයන් enum
විසින් නිර්වචනය කර ඇති ප්රමාණය ඉක්මවා කිසිදු ආකාරයක අවස්ථාවක් නොපවතින බව සහතික කරයි enum
.
එක් එක් උදාහරණයක් පමණක් ඇති නිසා enum
නියතය එය භාවිතා කිරීමට අවසර නොදෙනු ==
ඇති වෙනුවට ක්රියාකරු equals
ක්රමය එය ඔවුන් අවම වශයෙන් එක් වූ අදහස් කළ බව කවුරුත් හොඳින් දන්නා කාරණයකි නම් වස්තුව පද දෙකක් සාපේක්ෂව enum
නියත . ( equals
ක්රමවේදය Enum
යනු final
හුදෙක් super.equals
එහි තර්කයට ආයාචනා කර ප්රති result ලය ලබා දෙන අතර එමඟින් අනන්යතා සංසන්දනයක් සිදු කරයි.)
මෙම සහතිකය ජොෂ් බ්ලොච් නිර්දේශ කරන තරමට ශක්තිමත් වන අතර, ඔබ සිංගල්ටන් රටාව භාවිතා කිරීමට බල කරන්නේ නම්, එය ක්රියාත්මක කිරීමට ඇති හොඳම ක්රමය තනි මූලද්රව්යයක් භාවිතා කිරීමයි enum
(බලන්න: Java ලදායී ජාවා 2 වන සංස්කරණය, අයිතමය 3: සිංගල්ටන් දේපල a සමඟ බලාත්මක කරන්න පුද්ගලික ඉදිකිරීම්කරු හෝ එනුම් වර්ගයක් ; සිංගල්ටන් හි නූල් ආරක්ෂාව )
==
සහ අතර ඇති වෙනස්කම් equals
මොනවාද?
මතක් කිරීමක් ලෙස, එය සාමාන්යයෙන් ==
ශක්ය විකල්පයක් නොවන බව පැවසිය යුතුය equals
. කෙසේ වෙතත්, (සමඟ වැනි enum
) සලකා බැලිය යුතු වැදගත් වෙනස්කම් දෙකක් තිබේ:
==
කවදාවත් විසි කරන්නේ නැහැ NullPointerException
enum Color { BLACK, WHITE };
Color nothing = null;
if (nothing == Color.BLACK); // runs fine
if (nothing.equals(Color.BLACK)); // throws NullPointerException
==
සම්පාදනය කරන වේලාවේදී අනුකූලතා පරීක්ෂාවට යටත් වේ
enum Color { BLACK, WHITE };
enum Chiral { LEFT, RIGHT };
if (Color.BLACK.equals(Chiral.LEFT)); // compiles fine
if (Color.BLACK == Chiral.LEFT); // DOESN'T COMPILE!!! Incompatible types!
==
අදාළ වන විට භාවිතා කළ යුතුද ?
ඔවුන්ගේ අවස්ථා පිළිබඳ නිසි පාලනයක් ඇති වෙනස් කළ නොහැකි පංති ==
භාවිතා කළ හැකි තම සේවාදායකයින්ට සහතික කළ හැකි බව බ්ලොච් විශේෂයෙන් සඳහන් කරයි . enum
නිදර්ශනය කිරීම සඳහා විශේෂයෙන් සඳහන් කර ඇත.
අයිතමය 1: ඉදිකිරීම්කරුවන් වෙනුවට ස්ථිතික කර්මාන්තශාලා ක්රම සලකා බලන්න
[...] එය සමාන අවස්ථා දෙකක් නොපවතින බවට සහතිකයක් ලබා දීමට වෙනස් කළ නොහැකි පන්තියකට ඉඩ දෙයි: a.equals(b)
තිබේ නම් සහ එසේ නම් පමණි a==b
. පංතියක් මෙම සහතිකය ලබා දෙන්නේ නම්, එහි සේවාදායකයින්ට ක්රමවේදය ==
වෙනුවට ක්රියාකරු භාවිතා කළ හැකි equals(Object)
අතර එමඟින් කාර්ය සාධනය වැඩි දියුණු විය හැකිය. එනුම් වර්ග මෙම සහතිකය සපයයි.
සාරාංශගත කිරීම සඳහා, භාවිතා ==
කිරීම සඳහා වන තර්ක enum
:
- එය වැඩ කරනවා.
- එය වේගවත් ය.
- ධාවන වේලාවේදී එය ආරක්ෂිතයි.
- සම්පාදනය කරන වේලාවේදී එය ආරක්ෂිතයි.