使用 String 类型对象 ID 从数组对象中获取值
Get Values from array object using String type object id
如果我们将对象 ID 作为字符串值,是否有办法获取数组对象的值
//假设这是一个真实的对象id值,
一台 PC 向我发送一个数组,然后我从那台 PC 获取这个 id 作为字符串(使用套接字)。我想通过使用该对象名称来获取数组的内容。
客户
`
Random random = new Random();
for ( int i = 0 ; i<5 ; i++ ) {
weatherDetails[i] = random.nextDouble() * 100;
}
out.println(weatherDetails);
`
服务器
while (true) {
input = in.readLine();
if (input == null) {
return;
}
System.out.println("Input value weather->" + input);//[D@514713
}
看来你对自己造成的情况有误解。
当你使用
out.println(someObject);
打印出来的是someObject.toString
.
的结果
toString
的默认实现是对象的 class 名称、@
和对象的 hashCode()
方法的结果的串联。
由于数组是一个不重写 toString
方法的对象,您将获得数组的 class 名称(对于 double[]
类型的数组,这将是 [D
),然后是 @
,然后是在该 JVM 中分配的任何哈希码。
也就是说,印刷品根本没有任何有用的信息。
为了传输实际数据,您应该在数组上循环并以某种您能够阅读的形式打印其元素。
由于您没有这样做,当您尝试阅读该行时,您得到的只是无意义的字符串表示形式。这是不是对象ID。它 不是 任何类型的参考。它只是数组类型和哈希码的无意义串联。
如果你使用类似
的东西
out.println(Arrays.toString(weatherDetails));
然后你会在输出中得到实际的数字,格式如
[40.5,31.972,17.60,5.3]
然后您就可以通过移除括号、用逗号分隔并在每个结果元素上使用 Double.parseDouble()
来在另一面阅读它。
请注意,这只是一种选择。您可以使用其他实际循环并以其他方式放置数据的方法。例如,将元素的数量放在第一行,然后每行放置一个元素。然后在读取端,读取第一行,解析为整型,然后就知道读取多少行了,每行读取并解析。或者您可以使用 DataOutputStream
或 ObjectOutputStream
.
只是不要尝试直接打印数组。这样做你不会得到任何有用的信息。
如果我们将对象 ID 作为字符串值,是否有办法获取数组对象的值
//假设这是一个真实的对象id值,
一台 PC 向我发送一个数组,然后我从那台 PC 获取这个 id 作为字符串(使用套接字)。我想通过使用该对象名称来获取数组的内容。
客户
`
Random random = new Random();
for ( int i = 0 ; i<5 ; i++ ) {
weatherDetails[i] = random.nextDouble() * 100;
}
out.println(weatherDetails);
`
服务器
while (true) {
input = in.readLine();
if (input == null) {
return;
}
System.out.println("Input value weather->" + input);//[D@514713
}
看来你对自己造成的情况有误解。
当你使用
out.println(someObject);
打印出来的是someObject.toString
.
toString
的默认实现是对象的 class 名称、@
和对象的 hashCode()
方法的结果的串联。
由于数组是一个不重写 toString
方法的对象,您将获得数组的 class 名称(对于 double[]
类型的数组,这将是 [D
),然后是 @
,然后是在该 JVM 中分配的任何哈希码。
也就是说,印刷品根本没有任何有用的信息。
为了传输实际数据,您应该在数组上循环并以某种您能够阅读的形式打印其元素。
由于您没有这样做,当您尝试阅读该行时,您得到的只是无意义的字符串表示形式。这是不是对象ID。它 不是 任何类型的参考。它只是数组类型和哈希码的无意义串联。
如果你使用类似
的东西out.println(Arrays.toString(weatherDetails));
然后你会在输出中得到实际的数字,格式如
[40.5,31.972,17.60,5.3]
然后您就可以通过移除括号、用逗号分隔并在每个结果元素上使用 Double.parseDouble()
来在另一面阅读它。
请注意,这只是一种选择。您可以使用其他实际循环并以其他方式放置数据的方法。例如,将元素的数量放在第一行,然后每行放置一个元素。然后在读取端,读取第一行,解析为整型,然后就知道读取多少行了,每行读取并解析。或者您可以使用 DataOutputStream
或 ObjectOutputStream
.
只是不要尝试直接打印数组。这样做你不会得到任何有用的信息。