Kotlin 便捷的實現 Parcelable 序列化
Android中的序列化
在開發中,如果有需要用到序列化和反序列化的操作,就會用到 Serializable 或者 Parcelable,它們各有優缺點,會適用於不同的場景。
Serializable
Serializable 的優點是實現簡單,你只需要實現一個 Serializable 介面,並不需要任何額外的程式碼,但是它的序列化和反序列化,實際上是使用反射做的,所以效率會略低,並且它會在序列化的過程中,會建立很多臨時變數,所以更容易觸發 GC。
Parcelable
Parcelable 需要開發者自己去實現序列化的規則,所以會增加程式碼量,正是因為規則確定,所以效率會提高很多,並且不容易觸發 GC。
如何在 Kotlin 中便捷的使用 Parcelable
在 Kotlin 中使用 Parcelable 序列化有一個簡單的方式,那就是利用 Kotlin 在 1.1.4 版本中新增的一個註解
@Parcelize
如果你需要使用它,先要保證 Android Studio 對 Kotlin 的外掛已經升級到 1.1.4 之上的版本,現在的最新版是 1.2.10 。
在新版的 Kotlin 外掛中,已經自動包含了一個自動 Parcelable 實現生成器。簡單來說,只需要再主函式中,宣告序列化的屬性並新增一個 @Parcelize
註解,它將自動為我們建立 writeToParcel() 和 createFromParcel()。也就是對開發者而言,只需要加一個 @Parcelize 註解,其它的和正常的類沒有區別。
使用 @Parcelize
@Parcelize
是一個實驗室功能,所以還需要在 Gradle 中,增加 experimental 配置。
android{
...
androidExtensions {
experimental = true
}
...
}
然後在實體類中使用:
@SuppressLint("ParcelCreator")// 用於處理 Lint 的錯誤提示
@Parcelize
open class BaseBean : Parcelable{}
另外需要注意的是,子類繼承 BaseBean 時也是需要新增 @SuppressLint("ParcelCreator")
@SuppressLint("ParcelCreator")
data class UserBean(var name: String = "") : BaseBean() {
}
相關推薦
Kotlin 便捷的實現 Parcelable 序列化
Android中的序列化 在開發中,如果有需要用到序列化和反序列化的操作,就會用到 Serializable 或者 Parcelable,它們各有優缺點,會適用於不同的場景。 Serializable Serializable 的優點是實現簡單,你只需
python實現資料庫序列化儲存帶有漢字的列表
import pymysql import json b = ["你","好"] b = json.dumps(b,ensure_ascii=False) conn = pymysql.connect(host="",port=3306,user='',password='',db='',char
利用Avro實現Kakfa序列化和反序列化
1 在pom.xml中新增依賴, 1.1 在dependencies中配置: <dependency> <groupId>org.apache.avro</groupId> <ar
【原創】自己手寫實現Boost序列化簡易版
設計思路 在與多個系統進行網路互動時,序列化是不可缺少的技術。編寫一個C++語言的序列化實現,是練習運用模板超程式設計的絕佳案例,理解C++模板是如何"面向編譯期程式設計"的(業內好像沒有這個說法)。序列化物件處理基礎資料型別和類型別,boost的序列化功能劃分得更細緻,基本支援了C++語言
什麼是 Java 序列化,如何實現 java 序列化
大概解釋: 序列化就是: 一種用來處理物件流的機制,所謂物件流也就是將物件的內容進行流化。可以對流化後的物件進行讀寫操作,也可將流化後的物件傳輸於網路之間。 序列化是為了: 解決在對物件流進行讀寫操作時所引發的問題。 序列化的實現: 將需要被序列化的類實現Serializab
持久化類7個規範以及持久化類為什麼要實現Serializable序列化
PO(Persistence Object)持久化類7個規範 1.公有類 2.公有無參構造 3.私有屬性 4.公有的getter與setter 5.實現java.io.Serializable介面 6.不能用final修飾 7.如果是基礎 型
關於android傳遞物件Parcelable序列化的問題
package com.example.parceldemo; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.content.Intent; import an
Android使用Parcelable序列化複雜資料結構
前言 說到序列化我們都不陌生,最簡單的就是讓我們的實體類來實現java io包下的Serializable介面即可,但是android單獨又寫了自己的序列化方案,即Parcelable,它比Serializable更快,效率更高,佔用記憶體更少!因此也是Goo
什麼是java序列化,如何實現java序列化?(寫一個例項)?
原文地址:http://blog.csdn.net/cselmu9/article/details/41908741 Java 序列化技術可以使你將一個物件的狀態寫入一個Byte 流裡,並且可以從其它地方把該Byte 流裡的資料讀出來,重新構造一個相同的物件。這種機制允
springboot rabbitMQ 自定義MessageConverter和ClassMapper實現訊息序列化
背景:公司專案使用springboot + rabbitMQ 處理訂單和推送訊息,最開始的時候,producer都是直接convertAndSend的json資料, consumer也是接收json資料,然後在轉化為Bean去處理邏輯。當然,這樣雖然沒啥大問題,但是感覺很麻煩,後來查閱文件,
如何實現 Gson 序列化/反序列化過程中 過濾指定欄位
經過實戰: gson 過濾某一個屬性 但是又想在反序列正常set值,這個梗越了一段時間 使用ExclusionStrategy定製欄位排除策略:也是通過newGsonBuilder()來設定,自定
什麼是java序列化,如何實現java序列化?或請解釋Serializable介面的作用
首先要明確序列化的目的: 1.無論何種型別的資料,都是以二進位制的形式在網路上傳送,為了由一個程序把Java物件傳送給另一個程序,需要把其轉換為位元組序列才能在網路上傳送,把JAVA物件轉換為位元組序列的過程就稱為物件的序列化,將位元組序列恢復成Java物件的過程稱為物件的反序列化,(然後jav
Java中,什麼是實現物件序列化?如何實現物件序列化?
物件序列化可以將一個物件儲存到一個檔案,可以將通過流的方式在網路上傳輸,可以將檔案的內容讀取轉化為一個物件。所謂物件流也就是將物件的內容流化,可以對流化後的物件進行讀寫操作,也可將流化後的物件傳輸於網路之間。序列化是為了解決在物件流進行讀寫操作時引發的問題。
註解實現json序列化的時候自動進行資料脫敏
最近在進行開發的時候遇到一個問題,需要對使用者資訊進行脫敏處理,原有的方式是寫一個util類,在需要脫敏的欄位查出資料後,顯示掉用方法處理後再set回去,覺得這種方式能實現功能,但是不是特別優雅,想找個比較優雅的實現。 思考了一下,覺得資料只有在輸出的時候進行脫敏處理即可,
什麼是java序列化,如何實現java序列化?
Java 序列化技術可以使你將一個物件的狀態寫入一個Byte 流裡,並且可以從其它地方把該Byte 流裡的資料讀出來,重新構造一個相同的物件。這種機制允許你將物件通過網路進行傳播,並可以隨時把物件持久化到資料庫、檔案等系統裡。Java的序列化機制是RMI、EJB等技術的技術
Android 使用Parcelable序列化物件
Android序列化物件主要有兩種方法,實現Serializable介面、或者實現Parcelable介面。實現Serializable介面是Java SE本身就支援的,而Parcelable是Android特有的功能,效率比實現Serializable介面高,而且還可以用在IPC中。實現Serializab
Json反序列化之ObjectMapper(自定義實現反序列化方法)
對於伺服器端開發人員而言,呼叫第三方介面獲取資料,將其“代理”轉化並返給客戶端幾乎是家常便飯的事兒。 一般情況下,第三方介面返回的資料型別是json格式,而伺服器開發人員則需將json格式的資料轉換成物件,繼而對其進行處理並封裝,以返回給客戶端。
Java 基礎資料型別 和 深度克隆物件的2種方法(實現Cloneable介面或者實現物件序列化)
知識點1(java有9種傳遞函式引數時是傳值): 8大基礎資料型別加String: 1,位元組 byte 2,短整型 short 3,整型int 4,長整形 long 5,字元型 char 6,浮點型 float 7,雙精度型 double 8,布林型 bo
C# 實現Json 序列化和反序列化功能
1、新建一個 JSON 類,實現如下所示程式碼: /* * * 表示層的輔助類 * * 功能:JSON序列化和反序列化 * 作者:凌霜殘血 * */ public class JSON {
Lua 中實現 protobuf 序列化,反序列化
Protobuf 官方並沒有 Lua版本,然後網易的程式猿開發出了 protoc-gen-lua ,可以讓我們將 Proto 檔案轉成 lua 指令碼在 Lua中使用,下面是詳細的編譯、安裝、使用教程。文中用到的程式碼、工具都有百度網盤下載。 網盤下載地址: http: