I have an abstract class MainSocket . It is implemented by the SocketClient for convenience. In MainSocket there is a method for sending data and creating a connection. When I try to send a message, I get a NullPointerException .

Main class:

 public abstract class MainSocket { private final static String HOST = "localhost"; private static final int PORT = 8790; /*представляет собой многопоточный цикл событий , который обрабатывает операции ввода / вывода.*/ private EventLoopGroup workerGroup ; private Channel channel; private ChannelFuture future; private Bootstrap bootstrap; /*Публичные методы для наследников*/ public void sendData(ByteBuf out) { outData(out); } public void connect() { openConnection(); } /*TODO Абстрактыне методы для наследников*/ public abstract void sendMessage(String msg); public abstract void createConnect(); /*TODO Главный метод отправки пакетов*/ private void outData(ByteBuf out) { future = channel.writeAndFlush(out); //future.channel(); } /*TODO Устанавливает соединение*/ private void openConnection () { workerGroup = new NioEventLoopGroup(); try { bootstrap = new Bootstrap(); bootstrap.group(workerGroup).channel(NioSocketChannel.class) .handler(new SocketInit()); future = bootstrap.connect(HOST,PORT).sync(); future.channel().closeFuture().sync(); } catch (InterruptedException e) { e.printStackTrace(); } finally { workerGroup.shutdownGracefully(); } } } 

A descendant class converts a String to ByteByf :

 public class SocketClient extends MainSocket { private MainSocket clientSocket; ClientEncoder clientEncoder; @Override public void createConnect() { connect(); } @Override public void sendMessage(String msg) { final String msga = msg; ByteBuf data = Unpooled.wrappedBuffer(msga.getBytes()); sendData(data); } } 

    0