几年后我刚回到Java,并且在迁移应用程序时遇到问题。
我想将Book添加到类库中,并编写了该代码:
public class Book{
String author;
String title;
String code;
int num;
int num2;
public Book(String author, String title, String code, int num, int num2) {
this.author = author;
this.title = title;
this.code = code;
this.num= num;
this.num2= num2;
}
图书馆:
import java.util.ArrayList;
public class Library{
ArrayList<Book> books;
public void AddBook(String a, String b, String c, int ab, int ac) {
books.add(new Book(a,b,c,ab,ac));
}
public void showBooks(){
System.out.println(books);
}
public static void main(String[] args) {
Library l1 = new Library();
l1.AddBook("Adad", "dasdasd", "asdasdasdas", 2121, 31);
l1.showBooks();
}
}
但是我得到了NullPointException。用Library类中的AddBook方法指向行。即使经过研究,我也无法弄清楚。我认为这是一个简单的错误,但我看不到。可以看到我的错误的人解释我写错了什么吗?
这是因为您从未初始化您的数组列表。试试这个:
public class Library{
ArrayList<Book> books = new ArrayList<>();
public void AddBook(String a, String b, String c, int ab, int ac) {
books.add(new Book(a,b,c,ab,ac));
}
public void showBooks(){
System.out.println(books);
}
public static void main(String[] args) {
Library l1 = new Library();
l1.AddBook("Adad", "dasdasd", "asdasdasdas", 2121, 31);
l1.showBooks();
}
}
更好的做法是针对接口进行编码。因此更改此行:
List<Books> books = new ArrayList<>();
并且还将方法的第一个字母小写到addBook(...)