помочь с исключением нулевого указателя в Java - PullRequest
0 голосов
/ 10 июня 2009

Я собираю простую симулированную сеть в Java, где я могу добавить компьютеры, серверы и соединить два объекта с портами Ethernet. Это где исключение нулевого указателя генерируется, когда я вызываю "this.etherPort.addElement (t);"

</p> <pre><code>import java.util.Vector; public class Server extends Computer{ public Vector<Ethernet> etherPort; public void addPort(Ethernet t) { this.etherPort.addElement(t); } }

Этот код запускается, когда я создаю новый объект Ethernet, используя этот код:

</p> <pre><code>public class Ethernet {

общедоступный компьютерный терминал1, терминал2; публичный инт том; общедоступный Ethernet (компьютерный термин, серверный термин2) { this.terminal1 = термин; this.terminal2 = (компьютер) term2; если (термин! = ноль) { term.addPort (это); } if (term2! = null) { term2.addPort (это); } } }

Ответы [ 3 ]

10 голосов
/ 10 июня 2009

Вам необходимо создать экземпляр вашего члена etherPort:

public class Server extends Computer{

     public Vector<Ethernet> etherPort = new Vector<Ethernet>(); 

     public void addPort(Ethernet t)
     {
        this.etherPort.addElement(t);
     }
}

Вы должны убедиться, что addPort () не переопределяет метод, вызываемый из конструктора вашего компьютера. Учитывая контекст, я предполагаю, что это безопасно (, т. Е. У компьютера нет метода addPort ()).

Как указано ниже в комментарии, обычно лучше использовать интерфейсы, которые не ограничивают реализации контейнеров: вам лучше объявить etherPort как

List<Ethernet> 

вместо

Vector<Ethernet>

и используйте etherPort.add (элемент) вместо специфичного для вектора метода addElement.

3 голосов
/ 10 июня 2009

Вы не инициализировали вектор. Должно быть:

public Vector<Ethernet> etherPort = new Vector<Ethernet>();
2 голосов
/ 10 июня 2009

etherPort - ноль. Вы, очевидно, никогда не инициализируете его фактическим вектором. Я думаю, что вы хотите:

public class Server extends Computer{

     public Vector<Ethernet> etherPort; 

     public Server()
     {
        etherPort = new Vector<Ethernet>();
     }

     public void addPort(Ethernet t)
     {
        this.etherPort.addElement(t);
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...