如何在java中创建同一类对象的多个引用

时间:2016-10-27 07:16:56

标签: java sockets oop

我想在下面的程序中创建对我的Socket的动态引用,这样我就可以保存对我的Socket对象的不同引用,同时将它保存在map中。

所以第一次使用socket1创建Socket类的引用然后下次应该用socket2创建它,依此类推动态。 我尝试使用socket + a附加引用并尝试使用此名称创建引用,但它不起作用。有没有办法创建对象的动态引用

int a = 0;
public static void connect(int portNo, int trgtPNo , String webN)
{

    try {
        String x = Inet4Address.getLocalHost().getHostAddress().toString();
        InetAddress addr = InetAddress.getByName(x);
String sock = "socket" + a;
       Socket sock  = new Socket(webN, trgtPNo , addr , portNo);
    a++;        
    map.put(portNo,sock);
      } catch (Exception e) {
        e.printStackTrace();
    }
}}

任何领导都会有所帮助。

1 个答案:

答案 0 :(得分:1)

程序运行时无法动态设置变量名称。只有在编写代码时才确定变量名称。 相反,您可以设置Socket的Array个实例。例如,要创建10个实例:

try {
    int socketsNum = 10;
    String x = Inet4Address.getLocalHost().getHostAddress().toString();
    InetAddress addr = InetAddress.getByName(x);
    Socket[] sockets = new Socket[socketsNum];
    for (Socket s : sockets) {
        s = new Socket(webN, trgtPNo , addr , portNo);   
    }
} catch (Exception e) {
    e.printStackTrace();
}

然后,您可以获取带有索引号的Socket实例,例如socket[5]

如果您不想提前确定实例数,可以使用ArrayList()代替Array