POJO和Bean之间的编程区别

3
我有以下两个类。我能说第一个是POJO类,第二个是Bean类吗?
1)POJO类,因为它只有getter和setter方法,并且所有成员都声明为私有。
public class POJO {
    private int id;
    private String name;

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public void setId() {
        this.id = id;
    }

    public void setName() {
        this.name = name;
    }
}

2) Bean类 - 所有成员变量都是私有的,具有getter和setter方法,并实现Serializable接口

public class Bean implements java.io.Serializable {
    private String name;
    private Integer age;

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return this.age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

它还具有无参构造函数。

https://dev59.com/vnI-5IYBdhLWcg3w6tFR - Wundwin Born
2个回答

9

唯一的区别是bean可以被序列化。

来自Java文档 - http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html

类的可序列化由类实现java.io.Serializable接口启用。不实现此接口的类将不会序列化或反序列化其任何状态。所有可序列化类的子类型本身都是可序列化的。序列化接口没有方法或字段,仅用于标识可序列化的语义。


1
如果我实现了java.io.Serializable接口,那么它就是一个bean,否则就是一个普通的POJO类。@ninad Pingale - Vishnu
而且这个bean需要一个没有参数的构造函数 :) - user3402040

3

JavaBean类必须实现Serializable或Externalizable接口,必须有一个无参构造函数,所有JavaBean属性必须公开相应的setter和getter方法。 所有JavaBean实例变量应该是私有的。


可以给我一个无参构造函数的例子吗?提前致谢。 - Vishnu
1
公共类TestBean实现java.io.Serializable接口 {private String name; /** 无参构造函数。 */ public TestBean() { } public String getName() { return this.name; } public void setName(final String name) { this.name = name; }} - phani
如果在POJO的定义中缺少无参构造函数,但已经实现了Serializable接口,那么它是否被认为是一个Bean? - Sachin
一个Javabean应该实现Serializable,而不是必须。 - karlihnos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接