Перечисления(Enum) Java

264
22 декабря 2017, 01:27

Например, у меня есть класс Person, у которого есть конструктор

public Person(String name, String gender) {
this.name = name;
this.gender = gender;
}

Мне сказали, что лучше использовать Enum тип для поля gender, т.е мужчина и женщина.

enum Gender {
    MALE, FEMALE
}

Но при вызове конструктора класса с передачей в параметр поля Gender - будет явная ошибка, если не привести к строке через toString().

Как сделать так, чтобы можно было не приводить явно к строке, а описать это при создании Enum перечисления

Answer 1
class Person {
    private String name;
    private Gender gender;
    Person(String name, Gender gender) {
        this.name = name;
        this.gender = gender;
    }
    public static void main(String[] args) {
        new Person("Vasya", Gender.MALE);
    }
}
enum Gender {
    MALE, FEMALE
}

Java - язык со строгой типизацией. Если у вас поле типа enum, то в него никак нельзя засунуть string. Ну, разумеется, enum тоже является классом, просто немного специфическим, но , как и в любом классе , тут можно переопределить метод toString, прикрутить иной костыль каким-либо чудо-методом. но тогда вопрос - а зачем вам вообще enum , если вы у него постоянно пытаетесь вызвать toString или соверишить другой танец с бубном. toString - очень медленный метод, а прелести enum именно в том, что все его поля final со всеми вытекающими: он быстрый , работает в многопоточной среде, даже сравнивают его ==, а не методом equals. Своими преобразованиями вы убьете всю выгоду. Если у вас поле типа enum , то и в конструктор передавайте enum, иначе смысла в этом никакого.

READ ALSO
Вопрос? В чём причина?

Вопрос? В чём причина?

/*При вводе n-го количества символов при условии, что первый введённый символ находится в диапазоне от 1 до 5 программа работает не корректно*/

223
ObservableList для чего

ObservableList для чего

Поясните пожалуйста что из себя представляет в JavaFx список ObservableList и для чего он используется? Можно ли вместо обычных ArrayList использовать...

281
Почему дата высчитывается некорректно?

Почему дата высчитывается некорректно?

Я хочу получить дату отличающуюся на 10 дней от текущейПолучаю текущую дату с помощью

159