断言构造函数变量

时间:2014-01-24 19:11:37

标签: java constructor assert assertions

我正在尝试在抽象类中的构造函数上使用断言,String变量thename不能为null或为空,而int变量thesize不能为负或为零,这是我尝试的方法,但我提供的测试用例不通过。我如何断言构造函数的条件?

public abstract class AbstractItem implements Item{

    private int size;
    private String name;

    public AbstractItem(String thename, int thesize){
        assert thename != null;
        assert thename.length() > 0;
        assert thesize > 0;
        name = thename;
        size = thesize;
    } 

    public final int getSize(){
        return size;
    }
    public String toString(){
        return name;
    }
}

2 个答案:

答案 0 :(得分:1)

  

Enabling and Disabling Assertions

     

默认情况下,在运行时禁用断言。两个命令行开关允许您有选择地启用或禁用断言。

     

要启用各种粒度的断言,请使用-enableassertions-ea切换。要以各种粒度禁用断言,请使用-disableassertions-da切换。您可以使用提供给交换机的参数指定粒度:

答案 1 :(得分:0)

如果你使用Spring,你也可以使用它们的Assert,它也带有方便的错误信息,所以你可以有一个人为可读的错误,为什么一个断言失败。这是Spring的ACL库的一个片段,如果sid为null,你会收到一条很好的错误信息。

public Long createOrRetrieveSidPrimaryKey(Sid sid, boolean allowCreate) {
    Assert.notNull(sid, "Sid required");
    // more code here ....
}