尝试从其他类访问 ArrayList 时出现 NullPointerException

我正在编写一个管理库存的程序,例如通过添加、删除和租用物品,所有这些都是通过在面向对象的氛围中使用多个类来实现的。下面是我的实现类(Driver)。


Driver.java


public 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.java


public 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()方法返回为空。


饮歌长啸
浏览 104回答 1
1回答

喵喵时光机

您在 main 中调用 add() 方法,该方法实例化 itemTypes2 数组。在访问 Furniture 类中的 itemTypes2 之前,您不会调用 add() ,因此它为 null。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java