Enum lan kabeh fitur - 1

"Halo, Amigo!"

"Halo, Amigo!"

"Aku bakal pitutur marang kowe bab sing menarik banget. Iku cukup prasaja, nanging sing nggawe malah luwih menarik. Iki diarani enum. Enum minangka jinis sing nemtokake nilai-nilai tartamtu sing bisa diduweni variabel. Ayo dideleng. contone langsung:"

Definisi kelas enum
public enum Direction
{
 UP,
 DOWN,
 LEFT,
 RIGHT,
}
Nggunakake enum
Direction direction = Direction.LEFT;

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

"Dadi kita mung dhaptar sakumpulan nilai lan mung?"

"Ya, kita ngumumake enum lan dhaptar kabeh nilai sing bisa ana ing njero, dipisahake karo koma."

"Iku uga cukup gampang kanggo nggunakake."

"Apa sampeyan bisa nyetel menyang null?"

"Ya, enum minangka kelas biasa, utawa luwih kaya kelas, padha karo antarmuka kaya kelas."

"Dadi ing ngendi wae aku bisa nggunakake kelas, aku bisa nggunakake enum?"

"Ya."

"Apa aku bisa ngumumake enum ing kelas?"

"Ya."

"Lan entuk warisan enum?"

"Ora, sampeyan ora bisa warisan enum lan enum ora bisa warisan kelas liyane."

"Kok ngono?"

"Amarga compiler Java ngowahi enum dadi kira-kira iki:

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
}

"Minangka sampeyan bisa ndeleng saka conto iki:"

1) Kelas Direction pancen marisi kelas Enum, saengga ora bisa oleh warisan liya.

2) Kelas Direction diumumake minangka final, mula ora ana sing bisa marisi.

3) Variabel kelas Direction sejatine variabel Direction final statis publik. Iki katon ing kode sing nggunakake:

Arah arah = Arah .KIRI ;

4) Kelas Direction mung ngemot siji konstruktor lan pribadi. Tegese obyek Direction mung bisa digawe nggunakake kode nang kelas. Saliyane obyek sing diumumake, ora ana obyek sing bisa digawe.

5) Variabel arah bisa diwènèhaké minangka referensi kanggo samubarang obyek Arah sing ana. Kabeh mau disetel ing enum. Ora ana obyek liyane saka jinis iki, lan ora bakal ana obyek liyane ing mangsa ngarep.

6) Objek arah bisa dibandhingake nggunakake «==», sing mung bakal nindakake perbandingan referensi sing prasaja."

"Aku ora bakal ujar manawa super jelas, nanging luwih jelas sawise conto sampeyan."

"Apik. Banjur iki informasi liyane kanggo sampeyan:"

1) Saben obyek Arah duwe nomer unik dhewe. Pisanan (UP) 0, kaloro (DOWN) 1, katelu (KIRI) 2, etc. Sampeyan bisa njaluk nomer iki nggunakake cara ordinal (). "Deleng layar:

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

2) Saben enum nduweni metode nilai () sing ngasilake array saka nilai enum.

int leftIndex = Direction.LEFT.ordinal();

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

"Iki tegese kita bisa entuk indeks saka unsur enum, banjur entuk unsur maneh nggunakake indeks kasebut."

"Kita uga bisa nggunakake enum ing loop foreach :"

for (Direction direction : Direction.values())
{
 System.out.println(direction);
}
Output layar:
UP
DOWN
LEFT
RIGHT

"Tegese enum nimpa cara toString? Sawise kabeh, iku ora nampilake apa-apa kaya:"
«com.codegym.Direction@123fd4»?

"Ya. Kajaba iku, saben enum, lan mulane Arah, bisa diowahi dadi String lan kosok balene."

Ngonversi menyang String:
String left = Direction.LEFT.toString(); // left == "LEFT";
Ngonversi String menyang enum:
Direction direction = Direction.valueOf("LEFT");

"Oh, entuk."

"Apa sing kedadeyan yen sampeyan ngliwati String menyang fungsi valueOf sing ora ana ing Direction? Contone, «AMIGO»?"

"Menurutmu piye?"

"Pengecualian?"

"Yep. IllegalArgumentException."

"Inggih, punika mbungkus perkenalan kita ing donya enums."