NullPointer在创建具有另一个类的属性的类时

时间:2015-02-24 17:26:49

标签: java inheritance nullpointerexception

当我借用某些项目时,我正在处理一个项目,该项目存储我的项目人员和操作一些

此项目基于YouTube tutorial,适用于经典图书馆。

对不起,我会发布更多代码,因为我想知道我是如何做到这一点的。我个人认为我如何获得 ItemClass PersonClass 的实例存在问题。或者围绕 BorrowClass 继承的东西。

现在 BorrowClass 中的前两个方法工作正常,创建并添加到列表中,但是当我尝试创建新的时包含 BorrowClass 会抛出 nullPointer ,但通过调试我能看到variables中借用了,一切似乎都不为空或者红色方块是否意味着问题?

我创建 ItemClass

public class ItemClass implements Serializable {

    private static final long serialVersionUID = 1L;

    private int isbn;
    private String title, author;
    private String otherInfo;

    public ItemClass(String title,String otherInfo, String author,int isbn) {
        this.isbn = isbn;
        this.title = title;
        this.author = author;
        this.otherInfo = otherInfo;

    }

然后 PersonClass

public class PersonClass implements Serializable {

    private static final long serialVersionUID = 1L;

    private int telephone;
    private String name, surename, email;

    public PersonClass(String name,String surename, int telephone,String email) {
        this.name = name;
        this.surename = surename;
        this.telephone = telephone;
        this.email = email;

    }

然后 BorrowCLass

public class BorrowClass implements Serializable  {

    private static final long serialVersionUID = 1L;

    private ItemClass item;
    private PersonClass person;
    private Date borrowDate;
    private Date expireDate;

    public BorrowClass(ItemClass item, PersonClass person, Date borrowDate,
            Date expireDate) {
        this.item = item;
        this.person = person;
        this.borrowDate = borrowDate;
        this.expireDate = expireDate;

    }

现在我在图书馆

中处理了以上所有内容
public class Library extends Object implements Serializable {

    private static final long serialVersionUID = 1L;

    private List<ItemClass> listOfItems;
    private List<PersonClass> listOfPersons;
    private List<BorrowClass> listOfBorrowed;

    public Library() {
        listOfItems = new ArrayList<ItemClass>();
        listOfPersons = new ArrayList<PersonClass>();
        listOfBorrowed = new ArrayList<BorrowClass>();
    }

    public void addItemtoItemsCollection(ItemClass item) {
        listOfItems.add(item);
    }

    public void addPersontoPersonCollection(PersonClass person) {
        listOfPersons.add(person);
    }

    public void addBorrow(BorrowClass borrowed) {
        listOfBorrowed.add(borrowed);
    }

如果有人可以解释

的含义,也会很好
private static final long serialVersionUID = 1L;

因为在视频中我没有得到它而且我想知道。

感谢您的回答。

2 个答案:

答案 0 :(得分:0)

关于serialVersionUID

所以...基本上在某些时候你可能想要serialize你的对象并将它们保存在某个地方(比如在文件或数据库中),这样你以后就可以deserialize。现在,serialVersionUID字段用于了解,如果您使用的是与创建此对象时序列化使用的相同的类定义。

所以......每当你对serializable的某个类进行更改时,都会将serialVersionUID增加1,以便旧类版本的任何seiralized对象都没有错误{ {1}}使用当前的班级版本。

答案 1 :(得分:0)

女士们,先生们,我谦卑地为自己的愚蠢道歉。我有来自文件的功能加载,我正在加载 OLD 库文件,其中列表借用仍然不存在,没有要添加的列表。在这里,我有nullPointer。我被困在这一段时间但只是因为我的愚蠢:)谢谢大家的帮助。您可以关闭主题