java类属性的设置值范围

是否可以在构造函数中为 java 类属性设置值范围?


我知道您可以使用 if 语句在 set-methods 中进行类似的思考,但这不是我想要做的。


提前致谢。


示例类“项目”:


public class Items {

public int id;

public String from;

public String to;


public Items(int id, String from, String to) {

    this.id=id;

    this.from=from;

    this.to=to;

}

设置器中的值范围:


public void setId(int id){

    if(id>10 && id<100){

        this.id=id;

    }

}

你可以在构造函数中做类似的事情吗?(对于 int 和 string)


哆啦的时光机
浏览 217回答 1
1回答

当年话下

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

相关分类

Java