我正在编写将模拟Java中的Kerberos协议(protocol)的代码。我有一个服务器类和一个客户端类。但是有些内容是静态的,而其他内容不是静态的,再加上套接字,至少可以说是令人困惑。我相信该协议(protocol)的细节在这个问题上是任意的。

我有一个Server类,它调用ServerThread类:

public class Server{

    public void someMethod(){ /* some code */ }

    public static void main(String args[]){
        ServerSocket serverSocket = new ServerSocket(port);
        new ServerThread(serverSocket.accept()).start();
    }
}

public class ServerThread extends Thread{
    /* constructor (takes serverSocket from Server) */

    this.parent.someMethod();
    /* That would call someMethod() from the parent class Server instance
     * that instantiated this.
     */
    }

Server类的实例化ServerThread的部分已提供给我,我必须按原样使用它。我自己编写了someMethod()方法,这是我想在ServerThread中使用的方法。有没有一种方法可以调用代码this.parent.someMethod();的代码行?如果可以,是否有办法从单个 Controller 类访问两个类,还是静态内容与非静态内容一起破坏了这个想法?

最佳答案

当您分配Server(大概只有其中之一)时,请将其写入Server中的静态字段。然后,您可以从任何地方访问该字段,包括ServerThread

Server中:

static Server server; // the one true server in this application

Server.main中:
server = new Server();

ServerThread中:
Server.server.someMethod();

关于java - 从子线程访问父实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10249138/

10-09 08:49