我有一个实现Den
界面的课程Serializable
:
public class Den implements Serializable {
private double id;
private String name;
public Den(double id, String name){
this.id = id;
this.name = name;
}
public double getId() {
return id;
}
public void setId(double id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
}
我可以像Den
一样发送Intent
个实例:
Intent intent = new Intent(context, NewActivity.class);
intent.putExtra("OBJECT_KEY", new Den(20.2, "JOHN"));
startActivity(intent);
然后在另一个Activity
中接收它:
Intent intent = getIntent();
Den den = (Den) intent.getSerializableExtra("OBJECT_KEY");
现在我的问题是:为什么我需要在Serializable
上实现Den
接口,而不是int
,float
或{{1}等原始数据类型}}?内部发生了什么?
答案 0 :(得分:2)
为什么我需要在Den上实现Serializable接口,但不是 原始数据类型,如int,float或String?
String是Serializable而不是基本类型。
原始类型无法实现接口。
在序列化对象时,JVM会处理具有基本类型的字段。
答案 1 :(得分:0)
答案 2 :(得分:0)
Intent
类已经使您能够通过putExtra()
在活动之间传递各种数据类型(大多数是原始的)。因此,您只需要在自定义对象上实现Serializable
。
也像Alberto建议的那样,实施Parcelable
更好的做法是因为它特定于Android平台并且可能更加优化。检查这两者之间的更多信息,link
答案 3 :(得分:-1)
Becasuse Serializable
将您的所有数据设为Object
,以便转移。
如果您的数据项非常大,则使用int或float可能是多余的。