您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關(guān)如何正確的使用Kryo框架,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話(huà)不多說(shuō),跟著小編一起來(lái)看看吧。
使用方法如下:
</pre><pre name="code" class="java"> private static void testString () { Kryo kryo=new Kryo(); String w_str1="簡(jiǎn)體中文,繁體中文,English"; //把w_str1對(duì)象序列化 Output output=new Output(1024); kryo.writeObject(output, w_str1); output.flush(); output.close(); byte[] w_ret= output.toBytes(); //獲得byte數(shù)據(jù),這些數(shù)據(jù)可用作儲(chǔ)存、網(wǎng)絡(luò)傳輸?shù)?.. //還原 Input input=new Input(w_ret); input.close(); String w_str2=kryo.readObject(input, String.class); System.out.println(w_str2); }
再來(lái)一個(gè)HashMap類(lèi)的序列化跟還原,因?yàn)镵ryo自帶了很多java基本類(lèi)的Serializer,所以盡管不知道Serializer,Kryo也自動(dòng)匹配:
public static void testHashMap() throws NoSuchAlgorithmException{ Kryo kryo=new Kryo(); HashMap h=new HashMap(); h.put("k1", "v1"); h.put("k2", "v2"); Output output=new Output(1, 1024); kryo.writeObject(output, h); output.close(); byte[] data=output.toBytes(); Input i=new Input(data); i.close(); HashMap h3= (HashMap)kryo.readObject(i, HashMap.class); System.out.println(h3.get("k2")); }
那么,我自定義的Bean又應(yīng)該如何處理呢?下面給出例子:
1、先定義Bean TestBean:
public static class TestBean implements Serializable{ private int[] intArray; private HashMap<String,String> hashMapVal; private String strVal; public int[] getIntArray () { return intArray; } public void setIntArray (int[] intArray) { this.intArray = intArray; } public HashMap<String, String> getHashMapVal () { return hashMapVal; } public void setHashMapVal (HashMap<String, String> hashMapVal) { this.hashMapVal = hashMapVal; } public String getStrVal () { return strVal; } public void setStrVal (String strVal) { this.strVal = strVal; } }
2、因?yàn)檫@是自定義的Bean,Kryo在序列化前先要對(duì)TestBean進(jìn)行注冊(cè):kryo.register(TestBean.class,new BeanSerializer(kryo, TestBean.class)); ,具體例子如下:
public static void testBean() throws NoSuchAlgorithmException{ Kryo kryo=new Kryo(); kryo.register(TestBean.class,new BeanSerializer(kryo, TestBean.class)); TestBean tb1=new TestBean(); tb1.setStrVal("test1"); tb1.setHashMapVal(new HashMap<String,String>()); tb1.getHashMapVal().put("k1", "v1"); tb1.getHashMapVal().put("k2", "v2"); int[] ints=new int[3]; ints[0]=1; ints[1]=2; ints[2]=3; tb1.setIntArray(ints); Output output=new Output(1, 1024); kryo.writeObject(output, tb1); output.close(); byte[] data=output.toBytes();
Input i=new Input(data); i.close(); TestBean tb2= (TestBean)kryo.readObject(i, TestBean.class); System.out.println(tb2.strVal); System.out.println(tb2.hashMapVal.get("k1")); System.out.println(tb2.intArray[2]); }
以上就是如何正確的使用Kryo框架,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。