Warning: mkdir(): No space left on device in /var/www/tgoop/post.php on line 37

Warning: file_put_contents(aCache/aDaily/post/java_fillthegaps/--): Failed to open stream: No such file or directory in /var/www/tgoop/post.php on line 50
Java: fill the gaps@java_fillthegaps P.260
JAVA_FILLTHEGAPS Telegram 260
Enumerations, часть 1: обзор

Внутри JVM нет такого понятия как enum. Енумы компилируются в обычный класс, а значения - в статические экземпляры:

public final class Planet extends Enum {
public static final Planet EARTH;
public static final Planet MARS;
}

Полноценные классы c конструкторами, методами, полями и статическими элементами. У экземпляров есть состояние и определённое поведение.

Но есть нюансы:

🔸 Суперкласс Enum

От суперкласса Enum наследуются методы name(), ordinal() и статический метод values().
name() возвращает имя переменной, ordinal() - порядковый номер в списке. На практике эти методы достаточно бесполезны.

Метод values() используется чаще и возвращает массив всех объектов. Можно пройтись по нему в цикле:
for (Planet p : Planet.values()) {…}

или через Stream API:
Arrays.stream(Planet.values()).forEach(…)

🔸 Интерфейсы суперкласса

Enum реализует три интерфейса: Comparable, Serializable, Constable.

Первые два всем знакомы. Интерфейс Constable определяет методы для размещения объектов в пуле констант внутри JVM.

🔸 Создание экземпляров

Этим занимается JVM на старте приложения. Экземпляры енума создаются через приватный конструктор, недоступный вне енума.

🔸 Поля

Указываются для каждого экземпляра, инициализируются в конcтрукторе:

public enum Planet {
MARS(3389),
EARTH(6371);
int radius;

Planet(int radius) {
this.radius = radius;
}
}

🔸 Два типа методов

▫️Обычные
public int getRadius()

Используется для геттеров и простых вычислений.

В теории можно сделать set* метод и поменять поле у любого экземпляра. Но на практике так никто не делает. Когда объект доступен из любого места системы, то проще жить, если он неизменяемый.

▫️Абстрактные
Каждый экземпляр определяет свою реализацию:

public enum Planet {
MARS {
int distanceFrom(int) {…}
},
EARTH {
int distanceFrom(int) {…}
};

abstract int distanceFrom(int);
}

🔸 Наследование

Любой enum - это final класс с уже определённым суперклассом. Единственный шанс встроить enum в иерархию - добавить для него интерфейс.

Иногда это удобно. Если у енумов и классов один интерфейс, то с ними можно работать через один метод:

interface SpaceObject

enum Planet implements SpaceObject
class Meteor implements SpaceObject

public void getInfo(SpaceObject so)
👍9🔥1



tgoop.com/java_fillthegaps/260
Create:
Last Update:

Enumerations, часть 1: обзор

Внутри JVM нет такого понятия как enum. Енумы компилируются в обычный класс, а значения - в статические экземпляры:

public final class Planet extends Enum {
public static final Planet EARTH;
public static final Planet MARS;
}

Полноценные классы c конструкторами, методами, полями и статическими элементами. У экземпляров есть состояние и определённое поведение.

Но есть нюансы:

🔸 Суперкласс Enum

От суперкласса Enum наследуются методы name(), ordinal() и статический метод values().
name() возвращает имя переменной, ordinal() - порядковый номер в списке. На практике эти методы достаточно бесполезны.

Метод values() используется чаще и возвращает массив всех объектов. Можно пройтись по нему в цикле:
for (Planet p : Planet.values()) {…}

или через Stream API:
Arrays.stream(Planet.values()).forEach(…)

🔸 Интерфейсы суперкласса

Enum реализует три интерфейса: Comparable, Serializable, Constable.

Первые два всем знакомы. Интерфейс Constable определяет методы для размещения объектов в пуле констант внутри JVM.

🔸 Создание экземпляров

Этим занимается JVM на старте приложения. Экземпляры енума создаются через приватный конструктор, недоступный вне енума.

🔸 Поля

Указываются для каждого экземпляра, инициализируются в конcтрукторе:

public enum Planet {
MARS(3389),
EARTH(6371);
int radius;

Planet(int radius) {
this.radius = radius;
}
}

🔸 Два типа методов

▫️Обычные
public int getRadius()

Используется для геттеров и простых вычислений.

В теории можно сделать set* метод и поменять поле у любого экземпляра. Но на практике так никто не делает. Когда объект доступен из любого места системы, то проще жить, если он неизменяемый.

▫️Абстрактные
Каждый экземпляр определяет свою реализацию:

public enum Planet {
MARS {
int distanceFrom(int) {…}
},
EARTH {
int distanceFrom(int) {…}
};

abstract int distanceFrom(int);
}

🔸 Наследование

Любой enum - это final класс с уже определённым суперклассом. Единственный шанс встроить enum в иерархию - добавить для него интерфейс.

Иногда это удобно. Если у енумов и классов один интерфейс, то с ними можно работать через один метод:

interface SpaceObject

enum Planet implements SpaceObject
class Meteor implements SpaceObject

public void getInfo(SpaceObject so)

BY Java: fill the gaps


Share with your friend now:
tgoop.com/java_fillthegaps/260

View MORE
Open in Telegram


Telegram News

Date: |

How to Create a Private or Public Channel on Telegram? For crypto enthusiasts, there was the “gm” app, a self-described “meme app” which only allowed users to greet each other with “gm,” or “good morning,” a common acronym thrown around on Crypto Twitter and Discord. But the gm app was shut down back in September after a hacker reportedly gained access to user data. It’s easy to create a Telegram channel via desktop app or mobile app (for Android and iOS): 2How to set up a Telegram channel? (A step-by-step tutorial) Avoid compound hashtags that consist of several words. If you have a hashtag like #marketingnewsinusa, split it into smaller hashtags: “#marketing, #news, #usa.
from us


Telegram Java: fill the gaps
FROM American