例如,我有一个构造函数:
public Employee(int age, String name){ }
我应该在构造函数中编写哪个命令,它不允许创建age参数小于21的员工对象?
我不允许使用例外。
谢谢
答案 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作为构建选项启用断言,否则它们不起作用。