and*_*112 1 java null constructor instantiation
我有下一个构造:
public Dato (String nombre, float limiteInferior, float limiteSuperior) {
this.nombre = nombre;
this.limiteInferior = limiteInferior;
this.limiteSuperior = limiteSuperior;
}
Run Code Online (Sandbox Code Playgroud)
我想在limiteInferior> = limiteSuperior时停止实例化或"返回null".就像是:
public Dato(String nombre, float limiteInferior, float limiteSuperior) {
//Validar que el limite superior no sea menor o igual al inferior
if (limiteInferior < limiteSuperior) {
this.nombre = nombre;
this.limiteInferior = limiteInferior;
this.limiteSuperior = limiteSuperior;
} else {
this = null;
}
}
Run Code Online (Sandbox Code Playgroud)
你有几个选择.
您可以private使用工厂方法创建构造函数并控制创建实例,例如:
// not accessible from outside
private Dato(String nombre, float limiteInferior, float limiteSuperior) {
assert limiteInferior < limiteSuperior : "lower limit must be lower";
this.nombre = nombre;
this.limiteInferior = limiteInferior;
this.limiteSuperior = limiteSuperior;
}
public static Dato create(String nombre, float limiteInferior, float limiteSuperior) {
if (limiteInferior >= limiteSuperior) {
return null;
}
// params are valid, let's create this thing
return new Dato(nombre, limiteInferior, limiteSuperior);
}
Run Code Online (Sandbox Code Playgroud)
或者你可以扔一个IllegalArgumentException,例如:
public Dato(String nombre, float limiteInferior, float limiteSuperior) {
//Validar que el limite superior no sea menor o igual al inferior
if (limiteInferior >= limiteSuperior) {
throw new IllegalArgumentException("Invalid range!");
}
this.nombre = nombre;
this.limiteInferior = limiteInferior;
this.limiteSuperior = limiteSuperior;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44 次 |
| 最近记录: |