如何创建更好的对象

时间:2018-11-08 17:31:52

标签: java arrays list oop

与我以前的线程有关,我想打印如下输出:

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

但是这次,我尝试使用OOP方式。

因此,首先,我创建了一个名为ProductView的POJO类,该类将如下所示:

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 :(得分:0)

第一:

列表是一个接口,您应该传递列表的实现,例如ArrayList或类似的

秒:

您在ProductView-> SetBookId中遇到编译错误,在this.itemId中,没有itemId作为成员或构造函数参数

此外,在获取/设置评分中,您需要传递和返回评分列表。

命名: 评分实际上只是一个评分,您可以创建一个新的列表类,也可以按原样使用该评分,但更改名称

现在就您的问题: 您可以先使用对象初始化列表,然后将其发送给构造函数 例如:

    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相同。