栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java-如何仅创建具有有效属性的对象?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java-如何仅创建具有有效属性的对象?

标准做法是验证构造函数中的参数。例如:

class Range {  private final int low, high;  Range(int low, int high) {    if (low > high) throw new IllegalArgumentException("low can't be greater than high");    this.low = low;    this.high = high;  }}

旁注:要验证参数不为null(这很常见),可以使用:

import static java.util.Objects.requireNonNull;Constructor(Object o) {  this.o = requireNonNull(o); //throws a NullPointerException if 'o' is null}

更新

答复您对社会保险号的特定评论。一种方法是向类添加方法:

//constructorpublic YourClass(String ssn) {  if (!isValidSSN(ssn)) throw new IllegalArgumentException("not a valid SSN: " + ssn);  this.ssn = ssn;}public static boolean isValidSSN(String ssn) {  //do some validation logic}

调用代码如下所示:

String ssn = getSsnFromUser();while(!YourClass.isValidSSN(ssn)) {  showErrorMessage("Not a valid ssn: " + ssn);  ssn = getSsnFromUser();}//at this point, the SSN is valid:YourClass yc = new YourClass(ssn);

通过这种设计,您已经实现了两件事:

  • 您可以在使用前验证用户输入(您应该始终这样做-用户非常擅长错别字)
  • 您已确保如果
    YourClass
    误用会引发异常,它将帮助您检测错误

您可以通过创建一个

SSN
包含SSN并封装验证逻辑的类来做进一步的工作。
YourClass
然后将接受一个
SSN
对象作为参数,根据构造,该对象始终是有效的SSN。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/470163.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号