如何在类之间执行JAVA回调?
如何在类之间执行JAVA回调?
我来自JavaScript,在那里回调函数非常容易。我正在尝试将它们实现到JAVA中,但没有成功。
我有一个父类:
import java.net.Socket; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class Server { ExecutorService workers = Executors.newFixedThreadPool(10); private ServerConnections serverConnectionHandler; public Server(int _address) { System.out.println("Starting Server..."); serverConnectionHandler = new ServerConnections(_address); serverConnectionHandler.setNewConnectionCallback(new ServerConnections.NewConnectionCallback() { @Override public void onNewConnection(Socket _socket) { System.out.println("A function of my child class was called."); } }); workers.execute(serverConnectionHandler); System.out.println("Do something else..."); } }
然后我有一个子类,从父类中调用:
import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; import java.util.logging.Level; import java.util.logging.Logger; public class ServerConnections implements Runnable { private int serverPort; private ServerSocket mainSocket; private NewConnectionCallback newConnectionCallback; public ServerConnections(int _serverPort) { serverPort = _serverPort; } @Override public void run() { System.out.println("Starting Server Thread..."); try { mainSocket = new ServerSocket(serverPort); while (true) { newConnection(mainSocket.accept()); } } catch (IOException ex) { Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex); } } public void setNewConnectionCallback(NewConnectionCallback callback) { newConnectionCallback = callback; } public void newConnection(Socket _socket) { if (newConnectionCallback != null) { newConnectionCallback.onNewConnection(_socket); } } public interface NewConnectionCallback { void onNewConnection(Socket _socket); } }
在父类中正确实现以下部分:
serverConnectionHandler.setNewConnectionCallback(new ServerConnections.NewConnectionCallback() { @Override public void onNewConnection(Socket _socket) { System.out.println("A function of my child class was called."); } });