public enum Apple {
PIPO(1), BIBO(2), GITO(3);
private int price;
Apple(int price){
this.price = price;
}
int getPrice(){
return price;
}
}
public class Test {
public static void main(String[] args) {
Apple apple1 = Apple.PIPO(2);
System.out.println(apple1);
}
}
В enum Apple определен конструтор и не пойму почему мы пишем сразу перечислениям данные в конструктор именно в ENUM, а не в другом месте при создании объекта допустим как мы это делаем с классами:
PIPO(1), BIBO(2) ... // в enum(e), а не вот ниже
public class Test {
public static void main(String[] args) {
Apple apple1 = Apple.PIPO(2); //вот тут
System.out.println(apple1);
}
}
Я так понимаю Вам не понятен сакральный смысл необходимости в таком инструменте как перечисления (enum), попробую пояснить.
Ваш пример из вопроса, с яблоками ценой, может немного запутать, т.к. цена это переменная в каком-то роде.
Лучше взять например цвета светофора в какой-то игре.
enum Color {
RED, GREEN, YELLOW
}
Все компоненты определенного цвета - постоянная.
в 99% случаев Вам нет необходимости иметь 2 разных класса описывающих желтый цвет. В цветовой шкале rgb
например желтый цвет будет представлен чем то вроде (255, 255, 0)
.
Соответственно наш enum
будет иметь какой-то вид:
enum Color {
RED(255, 0, 0),
GREEN(0, 255, 0),
YELLOW(255, 255, 0);
int r;
int g;
int b;
Color(int r, int g, int b){
this.r = r;
this.g = g;
this.b = b;
}
....
}
Экземпляры нашего перечисления Color
будут созданы в момент загрузки класса, ClassLoader
-ом и никогда не будут скушаны GarbageCollector
-ом. И Обращаетесь вы к ним как по статической ссылке.
Color currentColor = Color.RED;
Как-то так, надеюсь Вам хоть чутка стало понятнее =)
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Пытаюсь написать программу клиент сервер которая будет оповещать клиентов о каких то событиях (например о новых сообщениях) между друг другомВ...
Пробую постигать MVP Pattern для Android приложенийСама суть, вроде, ясна, но для совсем небольших приложений, которые обычно и бывают в примерах
Пытаюсь реализовать REST клиент для андройдаPOST запрос не возвращает json ответ
Я написал проект на спринге который должен через JSP открывать страницу, и там выводит информацию из MySQL о студентах(имя, фамилия, фото) когда...