最近在新的需求中添加工具类的时候,碰到一个Object对象转换的问题,于是乎认识了一个‘新单词’,instanceof(运算符; 关键字; ) 。Java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例(这句话是借鉴于某一大神,通俗易懂)。
下面放上项目实际应用来让大家更好的认识这一运算符:web项目中最常用的json数据格式,此方法用于将传入的object对象转换成json对象。
public static String objectjson(Object obj) {
StringBuilder json = new StringBuilder();
if (obj == null) {
json.append("\"\"");
} else if (obj instanceof String || obj instanceof Integer
|| obj instanceof Float || obj instanceof Boolean
|| obj instanceof Short || obj instanceof Double
|| obj instanceof Long || obj instanceof BigDecimal
|| obj instanceof BigInteger || obj instanceof Byte) {
json.append("\"").append(string2json(obj.toString())).append("\"");
} else if (obj instanceof Object[]) {
json.append(array2json((Object[]) obj));
} else if (obj instanceof List) {
json.append(list2json((List<?>) obj));
} else if (obj instanceof Map) {
json.append(map2json((Map<?, ?>) obj));
} else if (obj instanceof Set) {
json.append(set2json((Set<?>) obj));
} // jsonarry/jsonobject对象单独处理
else if (obj instanceof JSONArray) {
json.append((JSONArray) obj);
} else if (obj instanceof JSONObject) {
json.append((JSONObject) obj);
} else {
json.append(bean2json(obj));
}
return json.toString();
}