[英]How to create a better object
與我之前的線程相關,我想打印這樣的輸出:
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 類的實例並賦予它一些價值。
但我不知道如何在我的構造函數中使用列表對象參數來做到這一點。
任何人都可以給我一些見解?
第一的:
List 是一個接口,你應該傳遞一個列表的實現,比如 ArrayList 或類似的
第二:
您在 ProductView -> SetBookId 中有編譯錯誤,在 this.itemId 中您沒有 itemId 作為成員或構造函數參數
此外,在獲取/設置評級時,您需要傳遞和返回評級列表。
命名:評級實際上只是一個評級,您可以創建一個新的 List 類,或者只是按原樣使用評級但更改名稱
現在回答您的問題:您可以先用對象初始化列表,然后將其發送到構造函數,例如:
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 相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.