这是我的代码。方法覆盖的简单演示。

public class Bond {
   void display() {
      System.out.println("Bond");
   }
}

public class ConvertibleBond extends Bond {
   void display() {
      System.out.println("ConvertibleBond");
   }
}

public class Pg177E2 {
   public static void main(String[]args) {
         int random = (int)(10*Math.random());
         Bond bond[] = new ConvertibleBond[6];
         for(int i = 0; i < 6 ;i++) {
            if(random < 5) {
               bond[i] = new Bond(); // the problem occurs here
         } else if(random > 5) {
              bond[i] = new ConvertibleBond();
         }
      }

      for(int i = 0; i < 6; i++) {
         bond[i].display();
      }
   }
}


这将足够简单并且应该起作用;但是,它以ArrayPointStoreExceptionNullPointerException的形式出现。有人可以帮我吗?我不知道我做错了什么。一切看起来都井井有条。这些类都在同一包中。

最佳答案

 Bond bond[] = new ConvertibleBond[6];
 bond[i] = new Bond();


您有一个ConvertibleBond数组。它只能是这种情况的实例,而不能是任何旧的邦德。

你可能想要

 Bond bond[] = new Bond[6];

关于java - Java ArrayPointStoreException和NullPointerException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17689052/

10-11 02:27