我正在编写一个管理库存的程序,例如通过添加、删除和租用物品,所有这些都是通过在面向对象的氛围中使用多个类来实现的。下面是我的实现类(Driver)。Driver.javapublic class Driver { public static void main(String[] args) { ABCRentals abc = new ABCRentals(); Furniture item1 = new Furniture(); boolean flag = abc.add(item1); List<Integer> idList = abc.getIDList(); String[] itemTypes = abc.getItemArray(); System.out.println("Item ID Numbers: " + Arrays.toString(idList.toArray())); System.out.println("Item Types: " + Arrays.toString(itemTypes)); }}这段代码工作得很好,因为它能够通过getIDList()和getItemArray()方法检索和打印 ArrayList 和 String 数组,这些方法在ABCRentals类中指定:ABCRentals.javapublic class ABCRentals implements Inventory{ private List<Integer> idNumbers = new ArrayList<Integer>(); private List<Item> items = new ArrayList<Item>(); private List<Integer> rentedItems = new ArrayList<Integer>(); private String[] itemTypes2; public ABCRentals() { } public List<Integer> getIDList() { return idNumbers; } public List<Item> getItemList() { return items; } public String[] getItemArray() { return itemTypes2; } public List<Integer> getRentedList() { return rentedItems; } public boolean add(Item item) { if (items.size() >= 300) return false; else { idNumbers.add(idNumbers.size() + 1); items.add(item); Object[] itemTypes = items.toArray(); itemTypes2 = new String[itemTypes.length]; int dvd = 0, f = 0, tv = 0; for (int index = 0; index < itemTypes.length; index++) { String indexValue = itemTypes[index].getClass().toString().substring(6); if (indexValue.equals("DVDPlayer")) { dvd++; itemTypes2[index] = indexValue + " #" + Integer.toString(dvd); }因此,当我尝试从类中访问 ArrayList 和数组的内容时Driver,它可以工作。但是,当我尝试从任何其他类访问 ArrayList 或数组时,无论是DVDPlayer、Furniture或Television类,我都会收到NullPointerException错误,因此换句话说,ArrayList 和数组不会使用类中指定的值进行更新/Driver填充与上面不同的是,该add()方法返回为空。
1 回答

喵喵时光机
TA贡献1846条经验 获得超7个赞
您在 main 中调用 add() 方法,该方法实例化 itemTypes2 数组。在访问 Furniture 类中的 itemTypes2 之前,您不会调用 add() ,因此它为 null。
添加回答
举报
0/150
提交
取消