java - Java 构造函数问题 - 布尔条件
问题描述
我正在尝试将布尔条件放入构造函数中。
任务是仅在条件为真时创建对象。
在下面的示例中:如果checkInitialPass()
返回 false,则不应创建对象。
SecuredNotepad(int numPages) {
super(numPages);
checkInitialPass();
}
解决方案
那是不可能的。
你有(至少)两个选择:
1.抛出异常
SecuredNotepad(int numPages) {
super(numPages);
if (!checkInitialPass()) {
throw new IllegalArgumentException("Invalid");
}
}
2.创建静态工厂方法
将构造函数设为私有并创建静态工厂方法。
private SecuredNotepad(int numPages) {
super(numPages);
}
public static SecuredNotepad createInstance(int numPages) {
if (checkInitialPass()) {
return new SecuredNotepad(numPages);
}
else {
return null;
// Or throw exception
}
}
如果初始传递失败,我会选择工厂方法,该方法会引发异常。或者,如果您想进一步扩展它,您可以使用 a SecureNotepadFactory
,正如 Thomas Timbul 在评论中提到的那样。
推荐阅读
- android - 从 Cordova 中的外部存储路径加载 Web 视图
- reactjs - 编译失败,因为在 react JS 中找不到文件
- python - 如何在抓取网页时单击下一步按钮
- java - 通过意图传递选择性数据
- acumatica - 无法从自定义图表中保存 APTran 记录
- dart - 理解颤振语法
- javascript - 遍历页面中的链接并根据条件单击
- asp.net-mvc - 为什么 connection.hub.start() 工作但 client.all.notify 不工作?
- angular - 找不到项目定义——Angular
- java - 我可以在 .as 类中使用 .xml < context-param > 作为常量吗?