Enum மற்றும் அதன் அனைத்து அம்சங்கள் - 1

"வணக்கம், அமிகோ!"

"வணக்கம், அமிகோ!"

"நான் உங்களுக்கு மிகவும் சுவாரஸ்யமான ஒன்றைப் பற்றிச் சொல்லப் போகிறேன். இது மிகவும் எளிமையானது, ஆனால் அது இன்னும் சுவாரஸ்யமாக்குகிறது. இது ஒரு enum என்று அழைக்கப்படுகிறது. ஒரு enum என்பது ஒரு மாறி கொண்டிருக்கும் மதிப்புகளின் குறிப்பிட்ட தொகுப்பை வரையறுக்கும் ஒரு வகை. பார்ப்போம். ஒரு உதாரணத்தில் உடனடியாக:"

enum வகுப்பின் வரையறை
public enum Direction
{
 UP,
 DOWN,
 LEFT,
 RIGHT,
}
ஒரு எண்ணைப் பயன்படுத்துதல்
Direction direction = Direction.LEFT;

if (direction == Direction.LEFT)
 direction = Direction.RIGHT;
else
 direction = Direction.DOWN;

"எனவே நாம் மதிப்புகளின் தொகுப்பை பட்டியலிடுகிறோம், அவ்வளவுதானா?"

"ஆம், நாங்கள் ஒரு enumஐ அறிவித்து, அதன் அனைத்து சாத்தியமான மதிப்புகளையும் கமாவால் பிரிக்கப்பட்டு உள்ளே பட்டியலிடுகிறோம்."

"இது பயன்படுத்த மிகவும் எளிதானது."

"நீங்கள் அதை பூஜ்யமாக அமைக்க முடியுமா?"

"ஆமாம், ஒரு enum என்பது ஒரு வழக்கமான வகுப்பு, அல்லது இடைமுகங்கள் எப்படி வகுப்புகள் போல இருக்கின்றனவோ அதைப் போன்றே இது ஒரு வகுப்பு போன்றது."

"எனவே நான் எங்கு வகுப்புகளைப் பயன்படுத்த முடியும், நான் enum ஐப் பயன்படுத்தலாமா?"

"ஆம்."

"ஒரு வகுப்பினுள் ஒரு enum ஐ அறிவிக்க முடியுமா?"

"ஆம்."

"மற்றும் ஒரு enum மரபுரிமையா?"

"இல்லை, நீங்கள் ஒரு enum மற்றும் ஒரு enum மற்ற வகுப்புகளை மரபுரிமையாக பெற முடியாது."

"அது ஏன்?"

"ஏனென்றால் ஜாவா கம்பைலர் enums ஐ தோராயமாக இவ்வாறு மாற்றுகிறது:

public final class Direction extends Enum
{
 public static final Direction UP = new Direction();
 public static final Direction DOWN = new Direction();
 public static final Direction LEFT = new Direction();
 public static final Direction RIGHT = new Direction();

 private Direction() {} // Private constructor
}

"இந்த எடுத்துக்காட்டில் இருந்து நீங்கள் பார்க்க முடியும்:"

1) டைரக்ஷன் கிளாஸ் முற்றிலும் எனும் வகுப்பைப் பெறுகிறது, எனவே அது வேறு எதையும் பெற முடியாது.

2) திசை வகுப்பு இறுதியானது என அறிவிக்கப்பட்டது, எனவே வேறு எதுவும் அதை மரபுரிமையாகப் பெற முடியாது.

3) திசை வகுப்பின் மாறிகள் உண்மையில் பொது நிலையான இறுதி திசை மாறிகள் ஆகும். அவற்றைப் பயன்படுத்தும் குறியீட்டில் இது தெளிவாகத் தெரிகிறது:

திசை திசை = திசை .இடது ;

4) திசை வகுப்பில் ஒரே ஒரு கட்டமைப்பாளர் மட்டுமே உள்ளார், அது தனிப்பட்டது. அதாவது வகுப்பிற்குள் உள்ள குறியீட்டைப் பயன்படுத்தி மட்டுமே திசைப் பொருள்களை உருவாக்க முடியும். அறிவிக்கப்பட்ட பொருள்களைத் தவிர, வேறு எந்தப் பொருளையும் உருவாக்க முடியாது.

5) திசை மாறிகள் ஏற்கனவே இருக்கும் திசை பொருள்களில் ஏதேனும் ஒரு குறிப்பை ஒதுக்கலாம். அவை அனைத்தும் எண்ணிற்குள் அமைக்கப்பட்டுள்ளன. இந்த வகையான வேறு எந்த பொருட்களும் இல்லை, எதிர்காலத்தில் வேறு எதுவும் இருக்காது.

6) திசை பொருள்களை «==» ஐப் பயன்படுத்தி ஒப்பிடலாம், இது ஒரு எளிய குறிப்பு ஒப்பீட்டைச் செய்யும்."

"இது மிகவும் தெளிவானது என்று நான் கூறமாட்டேன், ஆனால் உங்கள் உதாரணத்திற்குப் பிறகு இது மிகவும் தெளிவாக உள்ளது."

"அருமை. இதோ உங்களுக்காக இன்னும் கொஞ்சம் தகவல்:"

1) ஒவ்வொரு திசைப் பொருளுக்கும் அதன் தனித்துவமான எண் உள்ளது. முதல் (UP) 0, இரண்டாவது (DOWN) 1, மூன்றாவது (இடது) 2, முதலியன. ஆர்டினல்() முறையைப் பயன்படுத்தி இந்த எண்ணைப் பெறலாம். "திரையைப் பாருங்கள்:

Direction direction = Direction.LEFT;
int index = direction.ordinal();
int index2 = Direction.RIGHT.ordinal();

2) ஒவ்வொரு enum க்கும் ஒரு மதிப்புகள் () முறை உள்ளது, அது enum இன் மதிப்புகளின் வரிசையை வழங்குகிறது.

int leftIndex = Direction.LEFT.ordinal();

Direction[] array = Direction.values();
Direction left = array[leftIndex];

"எந்தவொரு enum தனிமத்தின் குறியீட்டையும் நாம் பெறலாம், பின்னர் அந்த குறியீட்டைப் பயன்படுத்தி மீண்டும் உறுப்பைப் பெறலாம்."

" ஃபோர்ச் லூப்பில் நாம் ஒரு enum ஐயும் பயன்படுத்தலாம் :"

for (Direction direction : Direction.values())
{
 System.out.println(direction);
}
திரை வெளியீடு:
UP
DOWN
LEFT
RIGHT

"என்யூம் toString முறையை மீறுகிறது என்று அர்த்தமா? எல்லாவற்றிற்கும் மேலாக, இது போன்ற எதையும் காட்டாது:"
«com.codegym.Direction@123fd4»?

"ஆம். மேலும், ஒவ்வொரு enum, எனவே திசை, ஒரு சரம் மற்றும் நேர்மாறாக மாற்றப்படும்."

சரமாக மாற்றவும்:
String left = Direction.LEFT.toString(); // left == "LEFT";
ஒரு சரத்தை enum ஆக மாற்றவும்:
Direction direction = Direction.valueOf("LEFT");

"ஓ, புரிந்தது."

"திசையில் இல்லாத valueOf செயல்பாட்டிற்கு நீங்கள் ஒரு சரத்தை அனுப்பினால் என்ன நடக்கும்? உதாரணமாக, «AMIGO»?"

"நீங்கள் என்ன நினைக்கறீர்கள்?"

"ஒரு விதிவிலக்கு?"

"ஆம். ஒரு சட்டவிரோத வாதம் விதிவிலக்கு."

"சரி, அது என்னம்களின் உலகத்திற்கான எங்கள் அறிமுகத்தை முடிக்கிறது."