考虑一个不可变类Foo(一个由ID和名称组成的POJO),需要对其进行序列化,以便将数据从服务器发送到客户端.
public final class Foo
{
private final int m_id;
private final String m_displayName;
private Foo(final int id, final String displayName)
{
m_id = id;
m_displayName = displayName;
}
public static Foo create(final int id, final String displayName)
{
// Some error checking occurs here.
. . .
m_id = id;
m_displayName = displayName;
}
// Getters etc.
. . .
}
Run Code Online (Sandbox Code Playgroud)
Foo对象的实例化通过静态工厂函数发生,并且由于对象是不可变的,因此没有零参数构造函数.
考虑一个不可变类Bar,它包含一个数据成员Foo,并为其实例化实现Builder模式(从代码片段中省略,因为它与问题无关).
public final class Bar
{
private final Foo m_foo;
. . .
private Bar(final Builder builder) …Run Code Online (Sandbox Code Playgroud)