如果有人再问你 Java 的反射,把这篇文章扔给他
在 Java 中,并不是所有的类型信息都能在编译阶段明确,有一些类型信息需要在运行时才能确定,这种机制被称为 RTTI,英文全称为 Run-Time Type Identification
,即运行时类型识别,有没有一点“知行合一”的味道?运行时类型识别主要由Class类实现。
在日常的学习工作当中,有一些知识是我们在读书的时候就能够习得;但有一些知识不是的,需要在实践的时候才能得到真知——这或许就是王阳明提倡的“知行合一”。
01、 Class类
在Java中,我们常用“class”(首字母为小写的c)关键字来定义一个类,说这个类是对某一类对象的抽象。你比如说王二是一个网络知名作者,我们可以这样简单地定义作者类:
package com.cmower.common.util;import java.io.UnsupportedEncodingException;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import com.alibaba.fastjson.JSON;@SuppressWarnings("all")public class JsonUtil {private static Log logger = LogFactory.getLog("json");public static byte[] objectToByte(Object obj) throws UnsupportedEncodingException {String jsonStr = JSON.toJSONString(obj); logger.debug("序列化后数据:" + jsonStr);return jsonStr.getBytes("UTF-8");}public static <T> T byteToObject(byte[] data, Class<T> obj) throws UnsupportedEncodingException {String objectString = new String(data, "UTF-8"); logger.debug("反序列化后数据 : " + objectString);return JSON.parseObject(objectString, obj);} public static <T> Object stringToObject(String data, Class<T> obj) throws UnsupportedEncodingException { logger.debug("反序列化后数据 : " + data);return JSON.parseObject(data, obj);}}
赞 (0)