簡體   English   中英

如何創建更好的對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM