Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 验证字符串参数的位置_Java_String_Validation_Class - Fatal编程技术网

Java 验证字符串参数的位置

Java 验证字符串参数的位置,java,string,validation,class,Java,String,Validation,Class,我有一个Student类,它必须有一个字符串ID的属性,该属性必须经过验证。我不确定是在student类中验证它,还是在我实现student类的类中验证它。这有意义吗?假设ID是最终的且不可变的,那么一种方法是让学生构造函数抛出异常,可能是新的IllegalArgumentException(“无效的学生ID”) 您还可以在Student类中提供静态方法,用于验证字符串是否有效,以防您需要在不创建Student对象的情况下进行检查 但我认为,判断ID是否有效的逻辑应该在学生课堂上 如果有(或将来

我有一个Student类,它必须有一个字符串ID的属性,该属性必须经过验证。我不确定是在student类中验证它,还是在我实现student类的类中验证它。这有意义吗?

假设ID是最终的且不可变的,那么一种方法是让学生构造函数抛出异常,可能是新的IllegalArgumentException(“无效的学生ID”)

您还可以在Student类中提供静态方法,用于验证字符串是否有效,以防您需要在不创建Student对象的情况下进行检查

但我认为,判断ID是否有效的逻辑应该在学生课堂上


如果有(或将来可能)不同类型的学生ID,你也可以考虑抽象的工厂模式,但是听起来像是一个过份的错误。

< P>假设ID是最终的和不可变的,那么一种方法是让学生构造函数抛出一个异常,很可能是<代码>新的ILLALGALGUMUMENTROR异常(“无效学生ID”);代码>

您还可以在Student类中提供静态方法,用于验证字符串是否有效,以防您需要在不创建Student对象的情况下进行检查

但我认为,判断ID是否有效的逻辑应该在学生课堂上


如果有(或将来可能)不同类型的学生ID,你也可以考虑抽象的工厂模式,但是听起来像是一个过份的错误。

< P>如果学生已经在使用内部的任何验证,否则使用第二个/<
Class Student
{
 public boolean  validate ()
  {
   //some logic to validation
  }
}
模型、控制器或动作的内部

 public boolean  validate ()
  {
   //some logic to validation
  }

如果学生已经有任何内部业务使用验证内部其他使用第二个

Class Student
{
 public boolean  validate ()
  {
   //some logic to validation
  }
}
模型、控制器或动作的内部

 public boolean  validate ()
  {
   //some logic to validation
  }

其中一种方法是使用验证对象。例如,请参见Spring框架中使用的验证方法。创建一个对象,该对象使用两种方法实现接口
验证器
:一种用于检测验证器是否可以验证要验证的实例,另一种用于验证实例

public class StudentValidator implements Validator<Student> {

  public boolean supports(Student student) {
   // ...
  }

  public void validate(Object target, Errors errors) {
   // ...
  }
}
公共类StudentValidator实现验证器{
公共布尔支持(学生){
// ...
}
公共无效验证(对象目标、错误){
// ...
}
}
这种方法将对象的代码和验证方法分离,在组合验证器时提供更大的灵活性:

  • 即使不遵守类层次结构,也可以组合多个验证器(POJO原则)
  • 当您需要使用来自其他系统(例如数据库)的数据验证字段时,这种方法避免在POJO域类中混合使用数据库/持久性代码

请参阅。

方法之一是使用验证对象。例如,请参见Spring框架中使用的验证方法。创建一个对象,该对象使用两种方法实现接口
验证器
:一种用于检测验证器是否可以验证要验证的实例,另一种用于验证实例

public class StudentValidator implements Validator<Student> {

  public boolean supports(Student student) {
   // ...
  }

  public void validate(Object target, Errors errors) {
   // ...
  }
}
公共类StudentValidator实现验证器{
公共布尔支持(学生){
// ...
}
公共无效验证(对象目标、错误){
// ...
}
}
这种方法将对象的代码和验证方法分离,在组合验证器时提供更大的灵活性:

  • 即使不遵守类层次结构,也可以组合多个验证器(POJO原则)
  • 当您需要使用来自其他系统(例如数据库)的数据验证字段时,这种方法避免在POJO域类中混合使用数据库/持久性代码

请参阅。

ID是一个格式为GXXXXXXXX的字符串,其中G是文字,X是数字。如果各个模块之间的“合同”暗示应验证字符串,则验证该字符串。最明显的地方是学生构造函数,但您可能希望在键入数字时动态验证数字并提供实时反馈,或者禁用“保存”按钮(并显示“请输入…”消息),直到输入有效值。ID是GXXXXXXXX格式的字符串,如果G是文字,X是数字,那么只要各个模块之间的“契约”暗示应该验证字符串,就可以验证字符串。最明显的地方是学生构造函数,但您可能希望在键入数字时动态验证数字并提供实时反馈,或者禁用“保存”按钮(并显示“请输入…”消息),直到输入有效值。您可以说,“另外提供一个静态方法”-你的意思是我可以在构造函数中验证它吗?@hyde你也可以签入setter类。这种方法不能在任何地方使用,例如在MVC框架中,它创建空实例,并用表单中的参数填充。允许学生id可变听起来像是各种潜在错误的配方,例如,在使用集合时,您说,“另外提供一个静态方法”-您的意思是我可以在构造函数中验证它吗?@hyde您也可以签入setter类。这种方法不能在任何地方使用,例如,在MVC框架中,创建空实例以填充表单中的参数。允许学生id可变听起来像是各种潜在错误的处方,例如在使用集合时。一些框架更喜欢将验证任务委托给对象或控制器之外的人。例如,请参阅验证程序如何在Spring框架中工作。Kartoch谢谢。但在本例中,没有web应用程序,因此这也是可能的选择。关于组合验证?还是针对数据库进行验证?请参阅我的帖子以获得更多解释…一些框架更喜欢将验证任务委托给对象或控制器之外的人。例如,请参见Spring框架中验证器的工作原理