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