建公司网站报价,牛商网网站建设,保山市城乡建设局网站,wordpress是哪种服务器记录#xff1a;470
场景#xff1a;Java中使用instanceof判断对象类型。例如在解析JSON字符串转换为指定类型时#xff0c;先判断类型#xff0c;再定向转换。在ListObject中遍历Object时#xff0c;先判断类型#xff0c;再定向转换。
版本#xff1a;JDK 1…记录470
场景Java中使用instanceof判断对象类型。例如在解析JSON字符串转换为指定类型时先判断类型再定向转换。在ListObject中遍历Object时先判断类型再定向转换。
版本JDK 1.8,Spring Boot 2.6.3。
一、解析Json字符串时使用instanceof判断对象类型
场景在基于微服务开发中一个请求会贯穿多个微服务一般在微服务之间传递参数均以JSON字符串为主流。
1.JSON字符串示例
{getTime: 2023-08-13 17:50:12,getValue: [13,350,193.62,37,1813]
}
解析在getValue中传递参数既有字符串、int型、double型等在把JSON字符串时无法转为指定类型只能使用ListObject类型是最合适。
需求本例需求场景这些字符必须都转换为Double类型再放到业务中使用。
2.使用instanceof判断对象类型
public static Double getDouble(Object obj) {if (obj null) return null;Double result null;try {if (obj instanceof Integer) {result ((Integer) obj).doubleValue();} else if (obj instanceof Long) {result ((Long) obj).doubleValue();} else if (obj instanceof Double) {result (Double) obj;} else if (obj instanceof BigDecimal) {result ((BigDecimal) obj).doubleValue();} else if (obj instanceof String) {result Double.parseDouble((String) obj);}} catch (Exception e) {log.info(类型转换异常);e.printStackTrace();}return result;
}
3.测试示例
public static void f1() {String result {\n \getTime\: \2023-08-13 17:50:12\,\n \getValue\: [\n \13\,\n 350,\n 193.62,\n 37,\n \1813\\n ]\n };JSONObject jsonResult (JSONObject) JSON.parse(result);ListObject listResult (ListObject) jsonResult.get(getValue);ListDouble listResultD new ArrayList();//类型转换listResult.forEach(item - {listResultD.add(getDouble(item));});//遍历结果listResultD.forEach(item - {System.out.println( item);});
}
4.输出结果
执行f1
13.0
350.0
193.62
37.0
1813.0
二、遍历ListObject时使用instanceof判断对象类型
场景在接收到结果集ListObject时Object的具体类型由多个时使用instanceof判断对象类型再转换增强代码合理性。
1.使用instanceof判断对象类型
public static Double getDouble(Object obj) {if (obj null) return null;Double result null;try {if (obj instanceof Integer) {result ((Integer) obj).doubleValue();} else if (obj instanceof Long) {result ((Long) obj).doubleValue();} else if (obj instanceof Double) {result (Double) obj;} else if (obj instanceof BigDecimal) {result ((BigDecimal) obj).doubleValue();} else if (obj instanceof String) {result Double.parseDouble((String) obj);}} catch (Exception e) {log.info(类型转换异常);e.printStackTrace();}return result;
}
2.测试示例
public static void f2() {ListObject list01 new ArrayList();Integer integerV 813;Long longV 209206L;Double doubleV 209207.13D;BigDecimal bigDecimal01 new BigDecimal(209208.23);BigDecimal bigDecimal02 new BigDecimal(209209);String strV 209210.35;list01.add(integerV);list01.add(longV);list01.add(doubleV);list01.add(bigDecimal01);list01.add(bigDecimal02);list01.add(strV);ListDouble list02 new ArrayList();//类型转换list01.forEach(item - {list02.add(getDouble(item));});//遍历结果list02.forEach(item - {System.out.println( item);});
}
3.输出结果
执行f2
813.0
209206.0
209207.13
209208.23
209209.0
209210.35
以上感谢。
2023年8月13日