java - 如何从另一个类访问静态变量?

标签 java class variables static

我正在尝试从服务器类访问客户端类中的变量“名称”。这就是我试图做的,但是当我打印它时,它说它是空的(?)。我怎样才能解决这个问题?提前致谢...

客户端类

class Client {
    static Socket socket;
    static String name;

    public static void main(String[] args) throws Exception {

        String hostname = "";
        int port = 0;

        if (args.length == 3) {
            hostname = args[0];
            port = Integer.parseInt(args[1]);
            name = args[2];
            System.out.println("(" + hostname + ":" + port + ")");
        } else {
            hostname = "localhost";
            port = 3000;
            name = "default";
            System.out.println("Using all default arguments. (" + hostname + ":" + port + ")");
        }

        Client c = new Client(hostname, port);
        c.connect();
    }
}

服务器类

class Server {
    ServerSocket main;
    Helper helper;

    static class MailServer extends Thread {
        DataInputStream dataIn;
        DataOutputStream dataOut;
        int index;
        Helper helper;
        String name = Client.name; //<--- HERE
    }
}

最佳答案

如果客户端和服务器类在同一个 JVM 中运行,那么您的代码应该可以工作,假设您未向我们展示的位是正确的。

所以...您(很可能)在一个 JVM 中启动 Client,并在另一个 JVM 中启动 ServerClient.name 静态数据不同。当您在客户端 JVM 中分配一个值时,它不会神奇地传播到服务器 JVM。

关于java - 如何从另一个类访问静态变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29585257/

相关文章:

java - 有没有办法通过 RMI 对象发送事件?

Python __reverse__ 魔术方法

ios - 尝试将数据存储在类中,更改 View Controller 时返回 nil

java - 在 Java 中更改方法范围之外的变量

r - 语言R : Variable doesn't change inside a 'for()' cycle?

java - 将请求参数转换为Class对象

java - JGit - 推送分支并添加上游(-u 选项)

java - 证书 key 用法不足以尝试操作。错误代码 : SEC_ERROR_INADEQUATE_KEY_USAGE

python - 关于 Python 中的元类

php - 安全风险? $_REQUEST 变量 ... $$ 在本地堆栈上