stu*_*176 3 java arrays constructor
我是一个相当新手的Java开发人员.我有一个用于表示书籍的Book类,以及一个用于表示库的Library类.
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;
}
Run Code Online (Sandbox Code Playgroud)
Book类中的一些代码(我没有粘贴所有的gets/sets):
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;
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是更有效地将书籍添加到阵列.如果我有50本书,我需要50行代码来填充数组.我想使用Book类中的构造函数,或者以某种方式使用Book类中的gets/sets,或者使用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;
}
}
Run Code Online (Sandbox Code Playgroud)
这个实现对于许多问题是开放的 - 例如创建了太多书籍,并发访问问题和许多其他问题.
但是应该给你一个指导,去哪里.
我个人宁愿选择一个集合,比如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);
}
}
Run Code Online (Sandbox Code Playgroud)