Skip to main content
 首页 » 编程设计

java中在java中的方法内创建类实例的范围

2025年05月04日25birdshome

任何人都可以向我解释一下在java中的方法内从类创建对象的范围,这是一个糟糕的方法并且浪费资源还是正常的?程序正在运行,但我不确定这一步:

/** 
 * Sending Packets Method 
 * @param message-the message we want to send to the client side 
 * @param IP-in InetAddress format 
 * @param Port-in integer format 
 * @return Null 
 */ 
public static void send(String message,InetAddress IP,int Port){ 
    byte [] buffer=message.getBytes(); 
    DatagramPacket datagrampacket=new DatagramPacket(buffer,buffer.length,IP,Port);  
    datagrampacket.setPort(20002); 
    try { 
        DatagramSocket datagramSocket=new DatagramSocket(); 
        datagramSocket.send(datagrampacket); 
        datagramSocket.setReuseAddress(true); 
        datagramSocket.close(); 
    } catch (SocketException e) { 
        e.printStackTrace(); 
    } catch (IOException e) { 
        e.printStackTrace(); 
    } 
} 

在这种情况下,我每次调用该函数时都会创建一个新的 DatagramSocket 对象,浪费资源或该对象在函数结束时消失?

谢谢

请您参考如下方法:

这并没有错,但它不是最佳的,DatagramSocket 不符合按需构建的轻量级类的资格。这个问题可能会在 SE Code Review 上得到更好的答案。 .

  • 使 datagramSocket 成为该类的属性。
  • 从方法中删除静态。
  • 在此类的构造函数或调用类中实例化套接字并传递给构造函数。
  • 您的参数变量“Port”应为“port”。
  • 您的代码忽略端口参数并将套接字硬编码为 20002。
  • 了解 distinction between variable lifetime and scope .