序列化、反序列化简单应用

        //序列化
	public static byte[] objToByte(Object obj) {
		
		try {
			//创建输出流
			ByteArrayOutputStream baos=new ByteArrayOutputStream();
			ObjectOutputStream oos=new ObjectOutputStream(baos);
			
                        //将obj对象写入到oos流中,继而写入到baos的byte[]中
			oos.writeObject(obj);
			//复制一份baos中的byte数组
			byte[] array = baos.toByteArray();
			
			oos.flush();
			oos.close();
			baos.close();
			
			return array;
			
		} catch (IOException e) {
			e.printStackTrace();
		}
		return null;
	}
        /**
	 * 反序列化
	 *<T>声明泛型,表示一个任意数据类型 
	 *Class<T> clazz  调用者在调用方法时,将T具体化
	 */
	public static <T> T byteToObj(byte[] buf,Class<T> clazz) {
		
		try {    
                        //创建输入流
			ByteArrayInputStream bais=new ByteArrayInputStream(buf);
			ObjectInputStream ois=new ObjectInputStream(bais);
			
                        //ois读取bais中的byte数组
			//将byte数组-->对象
			T object = (T) ois.readObject();
			
			ois.close();
			bais.close();
			
			return object;
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
        @Test
	public void saveObjByte() {
                //连接redis
		Jedis jedis=new Jedis("192.168.30.30",6379);
		
		//创建类的对象
		User user1=new User();
		user1.setAge(16);
		user1.setId(2);
		user1.setName("小g");
		user1.setSex("男");

		//对象-->byte数组  BinaryUtil是这三个方法的类
		byte[] value = BinaryUtil.objToByte(user1);
		byte[] key=BinaryUtil.objToByte("user01");
		
		jedis.set(key, value);
		
		User user = BinaryUtil.byteToObj(value, User.class);
		//User [id=2, name=小g, sex=男, age=16]
		System.out.println(user);
	} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值