Java OOP | Enum
Enum in Java
Terkadang kita ingin menyimpan jenis-jenis nilai yang nilainya terbatas dan sudah ditentukan. Contohnya nilai hari(senin, selasa ...) jenis kelamin (pria, wanita) dan sebagai lainnya. Di java kita dapat menyimpan nilai tersebut didalam enum.
Enum adalah sama seperti class, yang dapat memiliki attribute, method dan constructor. Yang membedakannya adalah enum berisikan nilai constanta yang secara otomatis public static final dan enum tidak bisa dibuat menjadi object.
Di java saat kita membuat kelas enum maka secara otomatis akan extends kelas java.lang.Enum. Oleh karena itu kita tidak dapat mewarisi kelas lain, hanya dapat implements interface.
Sintaks dasar membuat enum
public enum CarName {
TOYOTA, DAIHATSU, HONDA, MITSUBISHI, NISSAN, WULING,MERCEDES_BENZ;
}
Sintak dasar mengakses nilai konstanta enum
System.out.println(CarName.TOYOTA);
System.out.println(CarName.DAIHATSU);
Gunakanlah enum jika anda mengetahui nilai yang akan anda simpan tidak akan berubah.
Enum dapat kita terapkan didalam class atau didalam satu file terpisah.
public class Car {
// membuat enum didalam kelas
enum CarName {
TOYOTA, DAIHATSU, HONDA, MITSUBISHI, NISSAN, WULING,MERCEDES_BENZ;
}
}
Example Enum In Java
Kita bisa membuat variable dengan tipedata enum. Berikut adalah contoh program enum.
public enum CarName {
TOYOTA, DAIHATSU, HONDA, MITSUBISHI, NISSAN, WULING,MERCEDES_BENZ;
}
public class Car {
// membuat variable dengan tipe enum
private CarName carName;
private long price;
public Car(CarName carName, long price) {
this.carName = carName;
this.price = price;
}
public CarName getCarName() {
return carName;
}
public long getPrice() {
return price;
}
}
public class Main {
public static void main(String[] args) {
// membuat object Car
Car car1 = new Car(CarName.TOYOTA, 530_000_000);
System.out.println("Car Name is : "+car1.getCarName());
System.out.println("Car Price : "+car1.getPrice());
}
}
Output:
Car Name is : TOYOTA
Car Price : 530000000
Enum juga sering diterapkan dalam switch case. Berikut contoh program.
public enum CarName {
TOYOTA, DAIHATSU, HONDA, MITSUBISHI, NISSAN, WULING,MERCEDES_BENZ;
}
public class Car {
private CarName carName;
private long price;
public Car(CarName carName, long price) {
this.carName = carName;
this.price = price;
}
public void buyCar() {
// menggunakan enum dalam swicth case
switch(carName) {
case TOYOTA:
System.out.println("You buy a car "+carName+" with price "+price); break;
case HONDA:
System.out.println("You buy a Car "+carName+" with price "+price); break;
case DAIHATSU:
System.out.println("You buy a Car "+carName+" with price "+price); break;
case NISSAN:
System.out.println("You buy a Car "+carName+" with price "+price); break;
default:
System.out.println("I don't buy that car..!"); break;
}
}
}
public class Main {
public static void main(String[] args) {
// membuat object Car
Car car1 = new Car(CarName.HONDA, 530_000_000);
car1.buyCar();
}
}
Output:
You buy a Car HONDA with price 530000000
Constructor In Enum
Enum di java sama seperti kelas pada umumnya yang dapat memiliki method constructor. Namun perbedaannya constructor enum tidak boleh didefinisikan dengan access modifier public Hanya bisa private atau default. Karena tujuan enum bukan untuk dibuat object nya melainkan untuk di pakai secara langsung.
Sintaks dasar membuat constructor di enum
public enum CarName {
TOYOTA, DAIHATSU, HONDA, MITSUBISHI, NISSAN, WULING,MERCEDES_BENZ;
// membuat constructor di enum
CarName(String carBrand) {
}
}
Berikut adalah contoh program menggunakan constructor di enum
public enum CarName {
// secara otomatis akan memanggil method constructor
TOYOTA("Fortuner","All New Avanza","Vios"),
DAIHATSU("New Sigra","New Ayla","New Xenia"),
HONDA("Honda New Jazz", "Honda Brio", "Mobilio"),
MITSUBISHI("Pajero Sport","Xpander"),
NISSAN("Serena","Terra"),
WULING("Almaz RS"),
MERCEDES_BENZ("GLB-Class","A-Class");
// membuat attribute
private String[] carBrand;
// membuat method constructor
CarName(String... carBrand) {
this.carBrand = carBrand;
}
// membuat method getter
public String[] getCarBrand() {
return carBrand;
}
}
public class Main {
public static void main(String[] args) {
// memanggil opsi nilai constanta enum
CarName carname = CarName.TOYOTA;
for(String car : carname.getCarBrand()) {
System.out.print(car+" ");
}
}
}
Output:
Fortuner All New Avanza Vios
Method Enum Class
Terdapat beberapa method yang tersedia dalam enum class yang bisa kita gunakan.
1. Method ordinal()
Method ordinal() digunakan untuk mengambil nilai posisiordinal dari nilai constanta enum. Method ini mengembalikan tipedataint primitive
CarName.TOYOTA.ordinal();
// return 0
2. Method compareTo()
Method compareTo() digunakan untuk membandingkan nilai constanta enum berdasarkan posisi ordinal. Method ini mengembalikan tipedata int primitive
CarName.MERCEDES_BENZ.compareTo(CarName.DAIHATSU)
// return MERCEDES_BENZ.ordinal() - DAIHATSU.ordinal()
3. Method name()
Method name() digunakan untuk mengambil nilai constanta enum dalam bentuk String. Method ini cocok jika ingin mengkonversi enum to string.
CarName.TOYOTA.name()
// return "TOYOTA"
4. Method values()
Method values() digunakan untuk mengelompokan opsi nilai constanta enum menjadi array dengan tipedata enum
CarName[] carName = CarName.values();
// return TipedataEnum[]
Posting Komentar