2014-12-03 4 views
0

Я пытаюсь создать метод, который добавляет определенный объект в массив унаследованных объектов.Создание массива унаследованных объектов

public class Biblio { 
Biblio[] Tab; static int i=0; 
Biblio(); 
void insert(Biblio O){Tab[i]=O;i++;}}  

в главном классе, я создал 3 объектов классов, которые простираются от друг друга: средства Документ распространяется от Библио статьи простирается от документа, Книга распространяется из статьи.

public class TestBiblio { 
public static void main(String[] args) { 
    Document A= new Document(); 
    Article B= new Article(); 
    Book C= new Book(); 
    Biblio D= new Biblio(); 
    D.insert(A); 
    D.insert(B); 
    D.insert(C);}} 

После того, как я запустить код, я получаю исключение в потоке «основного» ошибки java.lang.NullPointerException. Я новичок в java, я не мог узнать, что шляпа пошла не так.

+2

вы должны сделать что-то вроде: Biblio [] Tab = новый Библио [specify_count]; и ваш конструктор не имеет тела –

+0

вы можете опубликовать полную статистику стека? Все классы в одном пакете/папке? – Mechkov

+0

да, это сработало, мне пришлось добавить Tab = new Biblio [5]; в конструкторе. – EatingTooMuch

ответ

4

Вы никогда не инициализировали массив, который вы использовали для вставки. Когда вы делаете Tab [i], вы разыскиваете нулевой указатель. Есть что-то вроде

public class Biblio { 
      Biblio[] Tab; 
      static int i=0; 
      public Biblio() { 
        Tab = new Biblio[5]; 
      } 
      void insert(Biblio O){ 
       Tab[i]=O;i++; 
      } 
     }  
+0

Можете ли вы отметить это как принятый ответ? галочка :) – committedandroider

+0

да, это работает сейчас. большое спасибо. – EatingTooMuch

Смежные вопросы