我想在下面的程序中创建对我的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();
}
}}
任何领导都会有所帮助。
答案 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
。