Java 安卓包裹器
根据,最好实现可打包,然后实现可序列化 然而,我的大多数实体都已经完成了,为了不实现与每个实体的接口,因为对我的所有实体来说似乎都太多了,我决定创建一个这样的可打包包装器。Java 安卓包裹器,java,android,Java,Android,根据,最好实现可打包,然后实现可序列化 然而,我的大多数实体都已经完成了,为了不实现与每个实体的接口,因为对我的所有实体来说似乎都太多了,我决定创建一个这样的可打包包装器。 但这真的更好吗?通常我会在顶部保存1,2个对象,效果很好,但这被认为是对Parcelable的错误使用,或者甚至是与Serializable相同(错误)的事情? 公共类SaveParcelable实现了Parcelable{ 私有HashMap值; 公共SaveParcelable(){ this.values=newha
但这真的更好吗?通常我会在顶部保存1,2个对象,效果很好,但这被认为是对Parcelable的错误使用,或者甚至是与Serializable相同(错误)的事情?
公共类SaveParcelable实现了Parcelable{
私有HashMap值;
公共SaveParcelable(){
this.values=newhashmap();
}
@抑制警告(“未选中”)
公共T getValue(字符串键){
if(this.values.containsKey(键))
返回(T)this.values.get(key);
其他的
返回null;
}
public void setValue(字符串键、对象值){
this.values.put(键,值);
}
@凌驾
公共int描述内容(){
返回0;
}
@凌驾
公共无效写入包裹(包裹目的地,内部标志){
}
}
这会增加运行时开销,而且似乎不会为您保存任何编码。您仍然需要重写writeToParcel()
,实现CREATOR
,并编写合适的构造函数。。。这就是您首先要实现的Parcelable
。是的,也许它为您保存了describeContents()
,但这只是样板。既然这样做没有帮助,而且会增加开销,你为什么还要为此烦恼呢?看来这有点不对劲。我不需要实现writeToParcel()
或describeContents()
。我使用该类将对象保存为onSaveInstanceState()
中的状态,并且可以正常工作。
public class SaveParcelable implements Parcelable {
private HashMap<String, Object> values;
public SaveParcelable() {
this.values = new HashMap<String, Object>();
}
@SuppressWarnings("unchecked")
public <T> T getValue(String key) {
if (this.values.containsKey(key))
return (T) this.values.get(key);
else
return null;
}
public void setValue(String key, Object value) {
this.values.put(key, value);
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
}
}