gpt4 book ai didi

java - 在 Java 中,如何通过对象的构造函数将对象添加到数组?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:54:09 24 4
gpt4 key购买 nike

我是一个相当新手的 Java 开发人员。我有一个 Book 类来表示一本书,还有一个 Library 类来表示一个图书馆。

图书馆类的一些代码:

/**
* method to populate books list
*/
public static void populateBooksList() {

// instantiate books

Book b1 = new Book("Catch 22", "Heller", "Thriller", 5, 1, false);
Book b2 = new Book("The Hobbit", "Tolkien", "Fantasy", 4, 2, false);
Book b3 = new Book("Gullivers Travels", "Swift", "Adventure", 3, 3,
false);
Book b4 = new Book("Moby Dick", "Melville", "Crime", 4, 4, false);
Book b5 = new Book("The Lord of the Rings", "Tolkien", "Fantasy", 4, 5,
false);

// populate the array

books[0] = b1;
books[1] = b2;
books[2] = b3;
books[3] = b4;
books[4] = b5;

}

还有 Book 类的一些代码(我没有粘贴所有的获取/设置):

public class Book {

/**
* declaring var for genre
*/
private String genre;

/**
* declaring var for rating
*/
private int rating;

/**
* declaring var for name
*/
private String name;

/**
* declaring var for ID
*/
private int iD;

/**
* declaring var for author
*/
private String author;

/**
* declaring var for onLoan
*/
private Boolean onLoan;

/**
* default constructor
*/
public Book() {

}

/**
* constructor with args
*
* @param nameP
* - book name
* @param authorP
* - book author
* @param genreP
* - book genre
* @param ratingP
* - book rating
* @param iDP
* - book ID
* @param onLoanP
* - onLoan
*/
public Book(String nameP, String authorP, String genreP, int ratingP,
int iDP, Boolean onLoanP) {
this.name = nameP;
this.iD = iDP;
this.author = authorP;
this.onLoan = onLoanP;
this.genre = genreP;
this.rating = ratingP;
}

我想做的是更有效地将书籍添加到数组中。如果我有 50 本书,我将需要 50 行代码来填充数组。我想以某种方式使用 Book 类中的构造函数,或 Book 类中的获取/设置,或使用 Book 类中包含的代码的其他方式,以便在实例化时自动将每个对象添加到数组中。这可能吗?

谢谢

S.

最佳答案

您问的更多是关于编程的一般概念,而不是 Java 本身。

简而言之 - 构造函数的唯一职责是创建和初始化一个对象。在构造函数中做任何其他事情都是不好的做法。

不过你可以使用工厂模式:

public class BookCollection {
public static final int MAX_COUNT = 20;

private int count = 0;
private Book[] books = new Book[MAX_COUNT];

public Book createBook(String nameP, String authorP, String genreP, int ratingP, int iDP, Boolean onLoanP) {
books[count] = new Book(nameP, authorP, genreP, ratingP, iDP, onLoanP);

return books[count++];
}

public Book[] getBooks() {
return books;
}
}

此实现对许多问题都是开放的——例如创建的书籍过多、并发访问问题等等。

但应该给你一个指导,去哪里。

我个人更喜欢使用集合,例如 ArrayList。不是数组。数组在某些情况下很棒,但大多数时候 ArrayList 会好得多。

public class BookCollection {
private List<Book> books = new ArrayList<Book>();

public Book createBook(String nameP, String authorP, String genreP, int ratingP, int iDP, Boolean onLoanP) {
Book result = new Book(nameP, authorP, genreP, ratingP, iDP, onLoanP)

books.add(result);

return result;
}

public List<Books> getBooks() {
return Collections.unmodifiableList(books);
}
}

关于java - 在 Java 中,如何通过对象的构造函数将对象添加到数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35004415/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com