例如,
public class Test {
Test() {
if(xxx)//do some check here
//reject instancing class test.
}
}
我想我可以抛出一个异常(exception)来拒绝它,还有其他方法吗?
我不确定实例化的结果会被拒绝,但是我认为自然的方法是:
Test test = new Test();//return null here indicating instancing rejected.
我希望Java和C++都应具有此“拒绝”功能。
最佳答案
语言没有内置这种功能,但是您有两种标准的实现方式:
在这两个选项之间进行选择并不容易。指导原则是,如果拒绝实例化是一种异常(exception)情况,例如编程或配置错误,然后执行异常路由。如果拒绝是例行的,例如由于某些资源暂时不可用,请采用工厂方法路线。当然,这些规则也有异常(exception),因此请使用最佳判断。