android中entity的作用,Android开发须知(2):Android中的entityBean

复杂的东西都是从简单的开始,如果想要打造一个极致精美的房间,那么你得造好每一块砖。想要打造一个漂亮的程序,就要做一个结构清晰目录(框架),并将把每一个种类(view、entity、adapter)按照特定的规则进行书写。

刚开始,我们就先从比较简单的entityBean开始。

从entity与JavaBean的区别开始

很多Java小白对这两个概念很模糊,尤其是和我一样自学杂七杂八的视频来扩充自己知识库的小伙伴,因为没有统一的规范所以就不是很清楚这一块。

entity:实体类,包装实体。没有业务逻辑。

JavaBean:按照一定的java规范创建的类,可以有自己的逻辑。

大部分情况下,javabean与entity长的差不多的。但是追究根源的话,两个还是不一样的。

Android中的entityBean与传统的JavaBean

不知道有多少和我一样从web转到Android的小伙伴。我们传统的JavaBean是这样写的

public class UserBean implements Serializable{

private static final long serialVersionUID= 123456;

private String name;

private int age;

public UserBean() {

}

public UserBean(String name, int age) {

this.name = name;

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

@Override

public String toString() {

return "UserBean{" +

"name='" + name + '\'' +

", age=" + age +

'}';

}

}

嗯,咋们来盘点一下:

1.公共的无参构+有参数造方法。2.类的声明是非final类型。3.实现可序列化接口4.为属性声明访问器:JavaBean中的属性应该设置为private,所以为属性提供getter/setter方法。

很标准有没有?但是,在android中的bean类是这样写的

public class UserBean{

public String name;

public int age;

@Override

public String toString() {

return "UserBean{" +

"name='" + name + '\'' +

", age=" + age +

'}';

}

}

在Android序列化不推荐用get-set方法,因为这样性能很低,而内存是有限的。Android不像web哪样对其他框架依赖那么紧密,自然也不用严格按照JavaBean那样写。所以实体属性定义成public。

Bean类除了这些之外,我们还有知道几个细节

1.继承Serializable接口我们需要写定义serialVersionUID

Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。

在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体(类)的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常[InvalidCastException]

在某些场合,希望类的不同版本对序列化兼容,因此需要确保类的不同版本具有相同的serialVersionUID;在某些场合,不希望类的不同版本对序列化兼容,因此需要确保类的不同版本具有不同的serialVersionUID。

2.面向接口编程

List> list= new ArrayList>是我们常见的写法

这样做有什么好处呢?比如说有个项目,开发某项目前期,用户很少,系统都是单线程执行,所以使用了ArrayList。但随着业务与用户的提升,开始牵扯到了多线程安全问题,我们只需要要改List> list= new Vector,其他的方法不用改变。但是如果你是ArrayList> list= new ArrayList>那你就惨了,所有用到ArrayList独有的方法都得改得不偿失。

3.泛型为String,则不用声明。

并不是所有带"<>"的我们都要声明存储对象的。这得从泛型的定义开始说起:

泛型的定义:在程序中我们将一个对象放入集合中,但是集合不会记住对象的类型,当我们在次使用对象的时候,对象变为Object类型,而程序中还是原来的类型,我们必须要自己转换其类型,为了解决这个问题,则提出泛型。

由此可知,显式类型参数字符串可以完全不使用泛型

4.内部类使用static

静态类和方法只属于类本身,并不属于该类的对象。如果想要创建一个内部类可以直接进行创建,而不先创建一个外部类对象,

一个小小的Bean类,也能挖出来这么多坑。当然,说这个主要是为了我下来将MVP架构模式,做个小铺垫,不知道对您是否有启发呢?我们改天再聊。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值