在java中的方法内创建类实例的范围
有人能向我解释一下在java中从方法中的类创建对象的范围吗?这是一种不好的方法,是浪费资源还是正常的?程序正在运行,但我不确定这一步:在java中的方法内创建类实例的范围,java,object,scope,object-lifetime,object-construction,Java,Object,Scope,Object Lifetime,Object Construction,有人能向我解释一下在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 */
/**
* 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对象,或者该对象在函数完成时消失
谢谢范围将是对象的声明。要在函数中创建对象,这取决于您的需求,如果您想重用该对象,那么您可以在类级别声明该对象,并将该类设置为singleton(如使用数据库存储库),然后在构造函数或某些init方法中初始化它。若您要求每个方法调用都应该有新的对象,那个么您应该在方法级别创建 由于没有将对象返回给任何实例变量,因此当methd结束时,没有指向对象的变量,因此可以对其进行垃圾收集。您无法知道gb何时运行或是否运行。这只是说,您不能假设对象将在方法结束后立即消失这没有错,但它是次优的,DatagramSocket不符合按需构建的轻量级类的条件。这个问题可能会得到更好的答案
- 将
作为类的属性datagramSocket
- 从方法中删除静态
- 在该类的构造函数或调用类中实例化套接字并传递给构造函数
- 参数变量“Port”应为“Port”
- 您的代码忽略端口参数,并将套接字硬编码为20002
- 学习这些知识