Java 在不创建新实例的情况下使用类

Java 在不创建新实例的情况下使用类,java,Java,假设我有三节课。类是登录,HandleMultipleClients和LiveMonitoring类。在登录类中,我将服务器连接到多个客户端,并发送套接字以处理该类中的多个类。我将列出连接到服务器的客户端,并将这些客户端放入数组中。在HandleMultipleClients中,还有一个函数将消息发送到特定的服务器我根据IP地址选择的客户。现在,在Live monitoring类中,我想将消息发送到一个特定的客户端,我将handlemultipleclients称为new handlemulti

假设我有三节课。类是登录,HandleMultipleClients和LiveMonitoring类。在登录类中,我将服务器连接到多个客户端,并发送套接字以处理该类中的多个类。我将列出连接到服务器的客户端,并将这些客户端放入数组中。在HandleMultipleClients中,还有一个函数将消息发送到特定的服务器我根据IP地址选择的客户。现在,在Live monitoring类中,我想将消息发送到一个特定的客户端,我将handlemultipleclients称为new handlemultipleclients(),并创建一个对象,这样这个新对象就不会像上面那样创建任何客户端列表。我想知道是否有任何方法不需要创建handlemultipleclients类的新对象 我的密码是

public class Login implements Runnable {
     @Override
     public void run() {
         try {
             serverSock = new ServerSocket(2101);
             while (true) {
                 sock = serverSock.accept();
                 LiveMOnitoring l=new LiveMOnitoring(sock);
                 System.out.println(sock);
                 //clients.put(soc.getPort(),soc);
             }
         }
     } 
}

public HandleMultipleClients(Socket sock) {
    soc=sock;
    clients.put(soc.getPort(),soc);
}

public void messagetospecificclients(String ipaddress,String choice) throws IOException, InterruptedException {
    System.out.print(ipaddress+"\n"+choice);
    for (Iterator<Integer> iter = clients.keySet().iterator(); iter.hasNext(); ) {
        System.out.print("ok1");
        int key = iter.next();
        java.net.Socket client = clients.get(key);
        InetAddress zee = client.getInetAddress();
        String s = zee.getHostAddress();
        System.out.print(s);
        if (zee.getHostAddress().equals(ipaddress)) {
            System.out.print("ok2");
            dos =new DataOutputStream(client.getOutputStream());
            dos.writeUTF(choice);
        }
    }
}


public class LiveMOnitoring extends javax.swing.JFrame {
    static Socket csocket;
    DataOutputStream dos;
    Map<Integer, java.net.Socket> clients = new HashMap<Integer, java.net.Socket> ();
    private void ApplicationsActionPerformed(java.awt.event.ActionEvent evt) {                                             
        h.messagetospecificclients();
    }
}
公共类登录实现可运行{
@凌驾
公开募捐{
试一试{
serverSock=新的ServerSocket(2101);
while(true){
sock=serverSock.accept();
LiveMOnitoring l=新的LiveMOnitoring(sock);
系统输出打印项次(sock);
//clients.put(soc.getPort(),soc);
}
}
} 
}
public HandleMultipleClient(套接字套接字){
soc=袜子;
clients.put(soc.getPort(),soc);
}
public void MessageToSpecificClient(字符串ipaddress、字符串选择)引发IOException、InterruptedException{
系统输出打印(ipaddress+“\n”+选项);
for(Iterator iter=clients.keySet().Iterator();iter.hasNext();){
系统输出打印(“ok1”);
int key=iter.next();
java.net.Socket client=clients.get(key);
InetAddress zee=client.getInetAddress();
字符串s=zee.getHostAddress();
系统输出打印;
if(zee.getHostAddress().equals(ipaddress)){
系统输出打印(“ok2”);
dos=新的DataOutputStream(client.getOutputStream());
dos.writeUTF(选择);
}
}
}
公共类LiveMOnitoring扩展了javax.swing.JFrame{
静态插座;
数据输出流dos;
Map clients=newhashmap();
私有void应用程序ActionPerformed(java.awt.event.ActionEvent evt){
h、 MessageToSpecificClient();
}
}

这就是您可以使用的
静态
功能

请阅读此处了解更多信息:

这就是您可以使用的
静态

请阅读此处了解更多信息:

在Java中,如果希望在不实例化类的情况下使用成员方法,则将该方法设置为静态

class A
{
   public static void methodName ()
   {

   }
}

A.methodName()调用它

在Java中,如果希望使用成员方法而不实例化类,则将该方法设置为静态

class A
{
   public static void methodName ()
   {

   }
}
A.methodName()调用它