如何为构造函数(java)中的参数指定最小值?
例如,我有一个构造函数:如何为构造函数(java)中的参数指定最小值?,java,parameters,constructor,Java,Parameters,Constructor,例如,我有一个构造函数: public Employee(int age, String name){ } 我应该在构造函数中编写哪个命令,它不允许创建年龄参数小于21的employee对象 我不允许使用异常 谢谢写下这样的话: public Employee(int age, String name) { if (age < 21) throw new IllegalArgumentException( "expected age to be greater t
public Employee(int age, String name){ }
我应该在构造函数中编写哪个命令,它不允许创建年龄参数小于21的employee对象
我不允许使用异常
谢谢写下这样的话:
public Employee(int age, String name) {
if (age < 21) throw new IllegalArgumentException(
"expected age to be greater than or equal to 21, but was " + age);
}
公共雇员(整数年龄,字符串名称){
如果(年龄<21岁)抛出新的IllegalArgumentException(
“预期年龄大于或等于21岁,但为”+年龄);
}
我将使用静态工厂方法并将构造函数设置为私有。
然后在该方法中,我将控制这些值是否创建实例
public static Employee getInstance(int age, String name)
{
if(age >= 21)
return new Employee(age, name);
return null;
}
您可以为此条件创建自定义异常
class AgeException extends Exception
{
public AgeExceptionException() {}
}
try
{
if(age< 21)
{
throw new AgeExceptionException();
}
}
catch(AgeExceptionException ex)
{
}
class AgeException扩展异常
{
public AgeExceptionException(){}
}
尝试
{
if(年龄<21岁)
{
抛出new AgeExceptionException();
}
}
捕获(AgeExceptionException-ex)
{
}
如果您确实希望在不显式抛出错误的情况下强制执行此操作,则可以使用断言
public Employee(int age, String name){
// Age higher than 21?
assert(age > 21);
/* Code */
}
您必须使用-ea作为构建选项启用断言,否则它们将不起作用
public class Employee {
private Employee(int age, String name) throws Exception {
//Your code
}
public static Employee getInstance(int age, String name){
if(age >= 21){
return new Employee(age,name);
}
else{
return null;
}
}
}
//现在要创建对象调用getInstance()我不允许使用异常,很抱歉我没有提到这一点。@user3371414这是正确的方法。。。你有什么建议吗?@user3371414没有其他方法可以避免对象创建这真的很有必要吗@Assylia没有必要,但它是一个替代方案。我也会这样做。我想它更灵活。你能解释一下它是怎么工作的吗?对我来说,它看起来很混乱。谢谢你一次again@user3371414用户Ajit偷了我的答案,你可以看一下。你应该告诉我们,如果参数小于21,构造函数应该怎么做。在调用之前进行检查constructor@Juvanis构造函数必须是私有的