问题说明了一切。有什么特殊事件发生吗?我有一个类需要实现 Serializable 接口。我正在使用 Wicket 开发应用程序。我已经实现了一个工厂类,它将提供一些链接(以消除重复写入的相同代码块的冗余):
public class NavigationLinkFactory implements Serializable {
private static final long serialVersionUID = 7836960726965363785L;
private NavigationLinkFactory() {
}
private static class SingletonHolder {
public static final NavigationLinkFactory instance = new NavigationLinkFactory();
}
public static NavigationLinkFactory getFactory() {
return SingletonHolder.instance;
}
private Object readResolve() throws ObjectStreamException {
return SingletonHolder.instance;
}
public Link<Serializable> getUserHomeLink() {
return new Link<Serializable>("home", new Model<Serializable>()) {
private static final long serialVersionUID = -8282608926361995521L;
@Override
public void onClick() {
EMSSession session = (EMSSession) getSession();
session.setActiveHorizonalMenu(1);
setResponsePage(HomePage.class);
}
};
}
public Link<Serializable> getProfileLink() {
return getProfileViewLink();
}
public Link<Serializable> getProfileViewLink() {
return new Link<Serializable>("profileView", new Model<Serializable>()) {
private static final long serialVersionUID = 232185489384306999L;
@Override
public void onClick() {
EMSSession session = (EMSSession) getSession();
session.setActiveHorizonalMenu(2);
setResponsePage(ProfileViewPage.class);
}
};
}
}
如果我没有实现 Serializable ,那么我会在 处得到异常java.io.ObjectOutputStream.writeObject
,这是由 wicket 框架的运行时环境引发的。如果我实施它,那么它就消失了。
ObjectInputStream#readobject()
那么,当为单例模式创建的某个对象调用方法时,究竟会发生什么呢?
我没有添加检票口标签,因为我认为这个问题与检票口无关。