Object对象转换成HashMap集合,取值出现异常的问题
最近在将后台的代码基于RMI协议进行改造,因为协议是TCP协议,没有对值进行序列化,所以传参不能使用pojo。经过测试,发现后台做序列化和反序列化的速度比传Object对象的速度要慢上许多,所以使用Object转HashMap的方法进行值的交换。
但是!!!!!!!测试获取值的时候出现了问题,获取到一个整数型的值出现了转换的错误。
错误代码:
PanyunServiceRMI py = (PanyunServiceRMI) Naming.lookup("rmi://"+"localhost"+":"+"11111"+"/panyun");
List<Object> o = py.deviceData(0 , 200);
for(Object ob : o){
Map<String, String> map = (Map<String, String>) ob;
String hwid = map.get("hwId");
String value = map.get("hwValue");
}
获取hwid的时候会出现异常,根据报错信息发现是long类型转换成String出现了异常。
经过改造后使用以下这种方式:
PanyunServiceRMI py = (PanyunServiceRMI) Naming.lookup("rmi://"+"localhost"+":"+"11111"+"/panyun");
List<Object> o = py.deviceData(0 , 200);
for(Object ob : o){
Map<String , Object> map = (Map<String , Object>) o;
String hwValue = (String) map.get("hwValue");
long hwId = (long) map.get("hwId");
}
泛型里放object对象,强转的时候转换成long类型,这样就能正常的拿取值了。