[英]Parsing parameters in subclass before calling constructor of the superclass
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");
}
我想在調用超級構造函數之前先放這兩個if語句。 我知道我不能這樣做,那么在調用super()
之前,那種解析參數(拋出Exception
)的無痛方法是什么?
使用String[]
聲明一個驗證方法並返回它:
private static String[] validate(String[] param) {
// do validation here
return param;
}
在第一次使用param
時調用它
super("Rectangle", Double.parseDouble(validate(param).parameters[0]),
這個技巧可以快速解決問題,但是,正如另一張海報所指出的,有時最好重構你的API(比如創建一個工廠方法)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.