public Subclass(String[] parameters) throws IllegalArgumentException {
super("Rectangle",
Double.parseDouble(parameters[0]),
Double.parseDouble(parameters[1]),
90,
Double.parseDouble(parameters[2]),
Double.parseDouble(parameters[3]));
if(parameters.length != 4) throw new IllegalArgumentException("bla, bla");
if(parameters == null) throw new IllegalArgumentException("bla, bla");
}
我想在调用超级构造函数之前放入这2个if语句。我知道我不能这么做,那么在调用super()
之前做这种类型的参数解析(投掷Exception
)有什么无痛的方式?在调用超类的构造函数之前解析子类中的参数
哇!多快啊,谢谢你们!我还不熟悉工厂,但... – plesiv 2010-08-13 23:20:55
这些链接将有所帮助 - Builder链接非常易于遵循。在这两种情况下,您都有效地赋予另一个类负责创建所需对象的新实例,而不是直接使用“新”关键字调用构造函数。在另一个类中,你可以做任何你想要的参数和状态验证。 – Brabster 2010-08-13 23:30:11
如果参数为null或长度小于4,那么您的代码已经抛出了ArrayIndexOutofBoundsException的NullPointerException异常。这些异常不是比IllegalArgumentException更具体/详细吗? – 2010-08-14 10:45:16