Как я могу установить (с помощью метода setter) свойство enum из класса, когда я делаю объект в Java - PullRequest
0 голосов
/ 06 мая 2019
enum SateBook {
    AMANAT, SAHAFI, AMADE;

}

//public class Book 

    private SateBook st;
    private SateBook stBok;
    private int price;
    private Integer page;
    private final String title;
    private final String auther;

    public Book() {
        this("");
    }

    public Book(String title) {
        this(title, "");
    }

    public Book(String title, String auther) {
        this.title = title;
        this.auther = auther;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    public int getPrice() {
        return this.price;
    }

    public void setPage(int page) {
        this.page = page;
    }

    public int getPeage() {
        return this.page;
    }

    public String getTitle() {
        return this.title;
    }

    public String getAuther() {
        return this.auther;
    }

    public void setSateBook(SateBook s) {

        this.stBok = s;

    }

    public String toString() {
        return String.format("name of Book: " + this.getTitle() + "\t" + "Aouther this book is: " + this.getAuther()
                + "\t" + "number of page this book is: " + this.getPeage() + "\t" + "State this book is: "
                + this.getStateBook() + "\t" + "price this book is: " + this.getPrice());
    }

    public String getStateBook() {
        return this.stBok.name().toString();
    }




//main class

//public class MainClass 

    public static void main(String[] args) {
        SateBook s=SateBook.AMANAT;//??? its not a public class and can't create object
        Book b=new Book();
        b.setPage(120);
        b.setPrice(1200);
        b.setSateBook(s);// how pass a filde or object?????

    }

В основном классе я не могу инициализировать поле свойства enum в классе Book. Имя поля stBok с типом SateBook (enum).

Как я могу это сделать?

Одно из решений, которое нужно использовать, - это преобразование из String в метод set (класс Book):

public void setSateBook(String s) {

    this.stBok = SateBook.valueOf(s);

}

но я не знаю, правильный ли этот код или нет.

1 Ответ

0 голосов
/ 06 мая 2019

Чтобы понять ваш вопрос должным образом, мне пришлось сделать определенные предположения относительно опечаток.Я решил понять, что состояние - это состояние, автор - как автор, а peage - страница.Также я представил немного более строгие соглашения для именования атрибутов и методов.

Перечисление BookState

public enum BookState {
    AMANAT, SAHAFI, AMADE;
}

Class Book

public class Book {
    private BookState state;
    private int price;
    private int numberOfpages;
    private final String title;
    private final String author;

    public Book() {
        this("");
    }

    public Book(String title) {
        this(title, "");
    }

    public Book(String title, String author) {
        this.title = title;
        this.author = author;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    public void setBookState(BookState state) {
        this.state = state;
    }

    public int getPrice() {
        return this.price;
    }

    public void setNumberOfpages(int page) {
        this.numberOfpages = numberOfpages;
    }

    public int getNumberOfpages() {
        return this.numberOfpages;
    }

    public String getTitle() {
        return this.title;
    }

    public String getAuthor() {
        return this.author;
    }

    public String getBookState() {
        return this.state.toString();
    }

    public String toString() {
        return String.format("Name of book: " + this.getTitle() + "\t" + "Author of book: " + this.getAuthor()
                + "\t" + "Number of numberOfpages of book: " + this.getNumberOfpages() + "\t" + "State of book: "
                + this.getBookState() + "\t" + "Price of book: " + this.getPrice());
    }
}

Инициализатор класса

public class Initializer {
    public static void main(String[] args) {
        Book b = new Book();
        b.setNumberOfpages(120);
        b.setPrice(1200);
        b.setBookState(BookState.AMANAT);
    }
}

Вы также можете создать дополнительный конструктор в классе Book и с помощью этого установить переменную BookState при вызове new();.

...