Хорошо, вы представили там кучу кода, но у вас есть это:
DatagramSocket ds;
Socket socket;
Draw d;
Paper p = new Paper(ds);
Значением по умолчанию для полей ссылочного типа является ноль, поэтому вы фактически вызываете
new Paper(null)
Это в итоге вызовет
new L1(null)
, поэтому вызов ds.getPort()
в L1 вызывает исключение.
Обратите внимание, что значение переменной передается в каждом случае - не то, чтобы ds
в L1 ассоциировалось с полем ds
в классе Draw
.
Не вдаваясь в подробности,Трудно предложить простое исправление - но, скорее всего, потребуется подождать, пока вы не создадите DatagramSocket
, прежде чем создавать Paper
.