如何在Person类中验证输入

时间:2015-08-05 09:42:22

标签: java

  public class Person {
    private String name;
    private String email;
    private String password;

    public Person(String name, String email, String password) {
        setName(name);
        setEmail(email);
        setPassword(password);
    }

    public void setName(String name) {
        if (name == null || name.isEmpty()) {
            throw new IllegalArgumentException("Invalid name");
        }

        this.name = name;   
    }

    public void setEmail(String email) {
        /* Validate email, throw exception */

        this.email = email;
    }

    public void setPassword(String password) {
        /* Validate password, throw exception */

        this.password = password;
    }

}
  1. 验证电子邮件地址密码的最佳方式(例如,8个字符,至少一个大写字符,一个数字,...)并在必要时抛出异常。 我用名字做的方式一样吗?

  2. Netbeans 有关在构造函数中使用setter的投诉? 如果我不愿意直接分配值(this.name = name),我需要验证输入两次(构造函数中的一个和setter中的一个)。

2 个答案:

答案 0 :(得分:0)

  1. 如果您想要正确地执行此操作,最好使用库来验证电子邮件地址。相信我,它比你想象的复杂得多 - 或者只是验证它有一个@和一个。在它,并留在那。最好验证您是否可以向其发送电子邮件,并通过您提供的链接请求验证。 Apache commons提供了一个类 -
  2. http://commons.apache.org/proper/commons-validator/apidocs/org/apache/commons/validator/routines/EmailValidator.html

    密码复杂性验证可能会像您想要的那样复杂,您可以自己轻松地完成此操作。

    1. 是Netbeans还是java抱怨 - 你得到什么警告?

答案 1 :(得分:0)

要在构造函数中调用setter,您应该更改这些函数的范围,并将它们放在private而不是public。如果你考虑这一点,那不是一个非常糟糕的主意,因为你的检查器功能不应该在这个类之外调用。