java - Wie erstellen Sie eine Instanz des generischen Typ T

Ich Schreibe ein server wie unten

public class Server<T extends RequestHandler> {

    public void start() {

        try{
            this.serverSocket = new ServerSocket(this.port, this.backLog);
        } catch (IOException e) {
            LOGGER.error("Could not listen on port " + this.port, e);
            System.exit(-1);
        }

        while (!stopTheServer) {
            socket = null;
            try {
                socket = serverSocket.accept();
                handleNewConnectionRequest(socket);
            } catch (IOException e) {
                LOGGER.warn("Accept failed at: " + this.port, e);
                e.printStackTrace();
            }
        }

    }

    protected void handleNewConnectionRequest(Socket socket) {
        try {
            executorService.submit(new T(socket));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Aber in der handleNewConnectionRequest(...) Methode, ich kann nicht erstellen Sie eine Instanz von T, wie es eigentlich nicht eine Klasse. Auch ich kann nicht mit der Methode erwähnt hier, wie ich will, pass den socket Instanz, so dass der request-handler bekommen kann OutputStream und InputStream auf die socket.


Kann ich nicht machen, eine generische server wie oben beschrieben und haben unterschiedliche Protokoll-Handler e.g

public class HttpRequestHandler extends RequestHandler {
    ...
}

public class FtpRequestHandler extends RequestHandler {
    ...
}

public class SmtpRequestHandler extends RequestHandler {
    ...
}

und verwenden Sie Sie dann wie unten

Server<HttpRequestHandler> httpServer = new Server<HttpRequestHandler>();
Server<FtpRequestHandler> ftpServer = new Server<FtpRequestHandler >();
Server<SmtpRequestHandler> smtpServer = new Server<SmtpRequestHandler >();
Schreibe einen Kommentar