Как создать лучший объект - PullRequest
0 голосов
/ 08 ноября 2018

В связи с моей предыдущей темой я хочу напечатать вывод, подобный этому:

bookId = "1234" (String)
bookName = "Machine Learning" (String)
price = $20 (int)
ratings = (array of object)
rater = a, score = 5
rater = b, score = 3

Но на этот раз я попытался использовать метод ООП.

Итак, во-первых, я создал класс POJO с именем ProductView, класс будет выглядеть так:

public class ProductView {

    // field
    private String bookId;
    private String bookName;
    private int price;
    private List<Ratings> ratings;

    // a constructor i tried to make
    public ProductView(String bookId, String bookName, int price, List<Ratings> ratings) {
    this.bookId = bookId;
    this.bookName = bookName;
    this.price = price;
    this.ratings = ratings;
    }

    public String getBookId() {
        return bookId;
    }

    public void setBookId(String bookId) {
        this.itemId = itemId;
    }

    public String getBookName() {
        return bookName;
    }

    public void setBookName(String bookName) {
    this.bookName = bookName;
    }

    public int getPrice() {
        return price;
    }

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

    public Ratings getRatings() {
        return ratings;
    }

    public void setRatings(Ratings ratings) {
        this.ratings = ratings;
    }
}

После этого я создал класс Ratings со следующим полем:

public class Ratings {

    private String rater;
    private int score;

    public Ratings(String rater, int score) {
        this.rater = rater;
        this.score = score;
    }
}

И, наконец, я создал главный класс под названием Main:

public class Main {

    public static void main(String[] args) {
    }
}

В главном классе я хочу создать экземпляр класса ProductView и дать ему некоторое значение.

Но я не знаю, как это сделать с параметром объекта списка в моем конструкторе.

Кто-нибудь может дать мне некоторое представление?

1 Ответ

0 голосов
/ 08 ноября 2018

first:

List - это интерфейс, вы должны передать реализацию списка, такого как ArrayList или аналогичный

second:

у вас есть ошибка компиляции в ProductView -> SetBookId, в this.itemId у вас нет itemId в качестве параметра члена или конструктора

, кроме того, при получении / установке рейтинга вам нужно передать и вернуть список оценок.

nameing: Ratingsна самом деле это просто рейтинг, вы можете создать новый класс списка или просто использовать рейтинг как есть, но измените имя

сейчас для вашего вопроса: вы можете сначала инициализировать список объектами, а затем отправить его вконструктор, такой как:

    List<Ratings> ratings = new ArrayList<>();
    ratings.add(new Ratings("rater",5));
    ratings.add(new Ratings("rater2",6));

    ProductView productView = new ProductView("bookId","bookName",1,ratings); 

Или, просто инициализируйте ArrayList в конструкторе, предпочтителен первый способ:

    ProductView productView1 = new ProductView("bookId","bookName",1,
            new ArrayList<Ratings>(Arrays.asList(new Ratings("rater",5), new Ratings("rater2",6))
    ));

надеюсь, это ответ на ваш вопрос

такой же, как DodgyCodeException, упомянутый в комментариях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...