与我以前的线程有关,我想打印如下输出:
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类的实例并为其提供一些值。
但是我不知道如何在构造函数中使用列表对象参数。
任何人都可以给我一些见识吗?
答案 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相同。