ple*_*siv 2 java parameters inheritance 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");
}
Run Code Online (Sandbox Code Playgroud)
我想在调用超级构造函数之前先放这两个if语句.我知道我不能这样做,所以Exception在调用之前做出那种解析参数(抛出)的无痛方法是什么super()?
声明一个获取String[]并返回它的验证方法:
private static String[] validate(String[] param) {
// do validation here
return param;
}
Run Code Online (Sandbox Code Playgroud)
并在param第一次使用时调用它
super("Rectangle", Double.parseDouble(validate(param).parameters[0]),
Run Code Online (Sandbox Code Playgroud)
这个技巧可以快速解决问题,但是,正如另一张海报所指出的,有时最好重构你的API(比如创建一个工厂方法).
| 归档时间: |
|
| 查看次数: |
2022 次 |
| 最近记录: |