kryo 3.0 测试遇到的bug

博客作者在使用Kryo 3.0.3版本进行序列化时遇到了严重的bug,导致数据丢失和NullPointerException。尽管Kryo以高效著称,但作者警告其他团队在使用前要谨慎考虑,因为这些问题可能导致无法预料的后果。HashMap能够正常读取,但ArrayList的序列化和反序列化出现了问题。
摘要由CSDN通过智能技术生成

很多地方都在说kryo是多么的有效率,多么的快.本人不幸遇到了大量的bug,到了不得不说的地步. 有采用kryo的团队请三思而后行,不然欲哭无泪


kryo版本是 kryo-3.0.3 


class info  implements Serializable{
	 
	private static final long serialVersionUID = -4914434736682797733L;
	String id;
	String name;
	String password;
	public info() {
		// TODO Auto-generated constructor stub
	}
	public info(String id,String name,String password) {
		// TODO Auto-generated constructor stub
		
		this.id=id;
		this.name=name;
		this.password=password;
	}
	
	public String getId() {
		return id;
	}
	public String getName() {
		
		return name;
	}
	public String getPassword() {
		return password;
	}

	public String  select() {
		
		return id+" "+name+" "+password;
	}
	public String getitem(String key) {
		
		switch (key) {
		case "name":
			key=this.getName();
			break;
		case "id":
			key=this.getId();
			break;
		case "password":
			key=this.getPassword();
			break;
		default:
			key=" the key is not here";
			break;
		}
		
		return key;
		
	}
	
}



import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.HashMap;

import org.objenesis.strategy.StdInstantiatorStrategy;

import com.esotericsoftware.kryo.Kryo;
import com.esotericsoftware.kryo.KryoException;
import com.esotericsoftware.kryo.io.Input;
import com.esotericsoftware.kryo.io.Output;


public class ttt {
	
	public static void main(String []agrs) throws Exception {
		 	Kryo kryo = new Kryo();  
		  
        kryo.setReferences(false);  
  
        kryo.setRegistrationRequired(false);  
  
        kryo.setInstantiatorStrategy(new StdInstantiatorStrategy());  
  
        kryo.register(wty.class); kryo.register(info.class); 
        kryo.register(HashMap.class); 

        Output output = new Output(new FileOutputStream("c:/file.bin"));
	      
		for (int i = 0; i < 20; i++) {
			kryo.writeObject(output, new info("1","admin","888888"));
		}
		output.flush();
		output.close();
	 	
        long p=System.currentTimeMillis();
		Input input = new Input(new FileInputStream(&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值