如何为构造函数(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构造函数必须是私有的