如何为构造函数(java)中的参数指定最小值?

时间:2014-03-27 10:27:57

标签: java parameters constructor

例如,我有一个构造函数:

public Employee(int age, String name){ }

我应该在构造函数中编写哪个命令,它不允许创建age参数小于21的员工对象?

我不允许使用例外。

谢谢

5 个答案:

答案 0 :(得分:4)

写下这样的东西:

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);
}

答案 1 :(得分:3)

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()

答案 2 :(得分:1)

我会使用静态工厂方法并将构造函数设为私有。 然后在该方法中,我将控制这些值以创建实例。

public static Employee getInstance(int age, String name)
{
   if(age >= 21)
      return new Employee(age, name);
   return null;
}

答案 3 :(得分:0)

您可以为此条件创建自定义例外

class AgeException extends Exception
{

      public AgeExceptionException() {}


 }


try
 {
     if(age< 21)
     {
          throw new AgeExceptionException();
     }
 }
 catch(AgeExceptionException ex)
 {

 }

答案 4 :(得分:0)

如果你真的想在不明确抛出错误的情况下强制执行此操作,可以使用断言。

public Employee(int age, String name){
    // Age higher than 21?
    assert(age > 21);

    /* Code */
}

您必须使用-ea作为构建选项启用断言,否则它们不起作用。