(主观)无效的Java类构造函数
我正在编写一个java类,其中给定的参数可能无效,但仍然是正确的类型。我希望我的类接受两个整数,但第二个整数不允许为零。我有什么可能中断构造函数,或者手动返回null?我的可能性是什么(主观)无效的Java类构造函数,java,class,constructor,Java,Class,Constructor,我正在编写一个java类,其中给定的参数可能无效,但仍然是正确的类型。我希望我的类接受两个整数,但第二个整数不允许为零。我有什么可能中断构造函数,或者手动返回null?我的可能性是什么 public class Test { private a, b; public Test(p1, p2) { if (p2 == 0) return null; a = p1; b = p2; } } 构造函数没有返回值,因此返回null不是选项。惯
public class Test {
private a, b;
public Test(p1, p2) {
if (p2 == 0) return null;
a = p1;
b = p2;
}
}
构造函数没有返回值,因此返回null不是选项。惯用的做法是抛出: 公开课考试{ 私人a、b; 公共测试P1、p2{ 如果p2==0{ 抛出新的IllegalArgumentExceptionp2不能为空; } a=p1; b=p2; } }
相当多的可能性,取决于你需要什么,这是最重要的事情
如果第二个参数为0,则可以抛出IllegalArgumentException,这样构造函数将带错误退出,并且不会创建类。如果要在参数无效的情况下返回null,则不能使用构造函数 相反,将构造函数设为私有,并编写一个静态工厂方法:
private Test(int a, int b) {
// Whatever.
}
public static Test create(int a, int b) {
if (/* a and b are invalid */) {
return null;
}
return new Test(a, b);
}
然后调用Test.create而不是newtest
但是,如果您不想扩展测试,这只是一个选项。引发异常?如果您不需要扩展测试,并且如果参数无效,则希望返回null,请将构造函数设为私有,并改为编写静态工厂方法。