gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:05:47 25 4
gpt4 key购买 nike

我的问题很简单:我需要从另一个类访问变量 history(在类 BinaryServer 中声明)。我正在使用更多类来运行此代码。这只是简单的客户端和服务器由套接字组成。客户端将二进制代码/文本发送到服务器,服务器将其转换为文本/二进制代码并将其发送回客户端。如果需要,我可以提供所有类。

BinaryServer 类

import java.net.*;
import java.util.ArrayList;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import graphics.gui;

public class BinaryServer extends gui implements ActionListener,Runnable
{
private ServerSocket server;
private Socket client;
public String text;
private BufferedReader reader;
public static ArrayList<String> history;


public static String binary_letter;
public static String[] letter;
public static int i;
public static String[] binary;
public static String sendback;


public static void main(String[] args)throws IOException
{
BinaryServer instance=new BinaryServer();

gui.buildframe(310,360,"Binary translator server");
gui.buildpane(300,300,true);
gui.buildbutton(300,20,"Translate");
instance.server(63400);
}

public void server(int port)throws IOException
{
history=new ArrayList<String>(100);
server=new ServerSocket(port);
button.addActionListener(this);

while(true)
{
client=server.accept();
reader=new BufferedReader(new InputStreamReader(client.getInputStream()));
text=reader.readLine();
history.add(text);
message.setText(message.getText()+"\n"+text+": ");
}
}

@Override
public void actionPerformed(ActionEvent e)
{
Thread response=new Thread(new BinaryServer());

if(text.contains("0"))
{
int length=text.length();
letter=new String[length+1];
sendback="";
int begin=-8;
int end=0;

for(i=1;i<=length/8;i++)
{
begin=begin+8;
end=i*8;
binary_letter=text.substring(begin,end);
Libary.translate();
message.setText(message.getText()+letter[i]);
sendback=sendback+letter[0+i];
}
}
else
{
int length=text.length();
letter=new String[length+1];
binary=new String[length+1];
sendback="";

for(i=1;i<=length;i++)
{
letter[i]=text.substring(i-1,i);
Libary.encode();
message.setText(message.getText()+binary[i]);
sendback=sendback+binary[0+i];
}
}
response.start();
}

public void run()
{
try
{
Socket feedback=new Socket("localhost",63403);

PrintWriter writer=new PrintWriter(feedback.getOutputStream(),true);
writer.println(sendback);
feedback.close();
return;
}
catch(IOException exc)
{
System.out.println("");
}
}
}

BinaryHistory 类(我想从中访问变量的类)

public class BinaryHistory
{
public static void main(String[] args)
{
show();
}
public static void show()
{
System.out.println(BinaryServer.history);
}

当我从类 BinaryHistory 访问变量 history 时,它始终为 null。

最佳答案

如果您只声明变量,不管类型或它是否是静态的,它将得到a default value of null。 .

您还必须初始化变量:

public static ArrayList<String> history = new ArrayList<>();

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com