我有一个类,我用它来存储我从数据库中检索到的数据,该数据库将对象作为字段。
我想在实例化类时初始化对象以避免 null
指针问题。
我想我在某处读到它不应该在字段声明中初始化字段,因为它可能会给 Struts 带来问题(但我现在找不到语句),所以我在构造函数中初始化字段。
我的问题是:
采用哪种方式重要吗?还是根本不应该这样做,只在实例化类后才放入新对象?换句话说,我应该这样定义我的类:
public class MenuView implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private ProjectInfo projectInfo;
private PartyInfo partyInfo;
private RequestTableInfo requestTableInfo;
private PartyRequestInfo partyRequestInfo;
public MenuView(){
projectInfo = new ProjectInfo();
partyInfo = new PartyInfo();
requestTableInfo = new RequestTableInfo();
partyRequestInfo = new PartyRequestInfo();
}
后跟 getter 和 setter 之类的。
public class MenuView implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private ProjectInfo projectInfo = new ProjectInfo();
private PartyInfo partyInfo = new PartyInfo();
private RequestTableInfo requestTableInfo = new RequestTableInfo();
private PartyRequestInfo partyRequestInfo = new PartyRequestInfo();
public MenuView(){ }
后跟 getter 和 setter 或像这样:
public class MenuView implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private ProjectInfo projectInfo;
private PartyInfo partyInfo;
private RequestTableInfo requestTableInfo;
private PartyRequestInfo partyRequestInfo;
public MenuView(){}
接着是 getter 和 setter,然后像这样实例化它:
MenuView menu = new MenuView();
menu.setProjectInfo(new ProjectInfo);
最佳答案
上面的任何方法都可以,但这是最好的。初始化类的全部要点当然是避免引用 null
并使用首选值初始化它们,如下所示。
从那里添加 getter 和 setter 会很好地工作
public class MenuView implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private ProjectInfo projectInfo;
private PartyInfo partyInfo;
private RequestTableInfo requestTableInfo;
private PartyRequestInfo partyRequestInfo;
public MenuView(int a, int b, int c, int d){
projectInfo = new ProjectInfo(a);
partyInfo = new PartyInfo(b);
requestTableInfo = new RequestTableInfo(c);
partyRequestInfo = new PartyRequestInfo(d);
}
关于java - 在 Struts 2 中初始化 Action 类字段的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35465700/