如何创建更好的对象



与我之前的线程相关,我想打印一个类似的输出:

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) {
}
}

在Main类中,我想创建一个ProductView类的实例,并给它一些值。

但我不知道如何在构造函数中使用列表对象参数。

有人能给我一些见解吗?

第一个:

List是一个接口,你应该传递一个列表的实现,比如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相同。

最新更新