1 回答
TA贡献1890条经验 获得超9个赞
您最好使用私有构造函数使您的类不可变,然后使用static工厂方法:
public final class Items {
public final int id;
public final String from;
public final String to;
private Items(int id, String from, String to) {
this.id=id;
this.from=from;
this.to=to;
}
public static Items create(int id, String from, String to) {
// check that id is in a valid range
if(id <= 10 || id >= 100){
throw new IllegalArgumentException("Id must be between 10 and 100");
}
// here you can check "from" and "to" too and check that they are valid
// if no exception has been thrown
// then we can safely say that the arguments are valid
return new Items(id, from, to);
}
}
这种方法的优点是:
任何字段
Items
都不会改变,因为您已经制作了每个字段以及类,final
这将使该类Items
可以直接安全地被多个线程使用(如果字段也是不可变的)。如果您传递无效参数,则不会构造任何对象。通常不鼓励在构造函数中抛出异常。由于对象处于创建阶段,然后被丢弃
您可以在 jdk 的许多类以及许多库中看到这种方法。
添加回答
举报