readme

Java面向对象程序设计-完成实验报告(三)

需求分析

我们在之前的项目中实现了报告的生成和提交过程。我们将在本项目中使用标注反射机制来实现报告校验功能。

在教授布置报告作业时,可能还对报告做了长度的要求。例如,

  1. 四个必要部分(标题、姓名、问题阐述、观点阐述)不可缺少;
  2. 报告标题不得少于10个字符,不得长于50个字符。
  3. 问题阐述和观点阐述部分不得长于500个字符。

为了实现上述功能,我们将在本项目中为这些要求分别开发标注,用于校验。学生在生成报告时,可以自行检查。

步骤一

首先,我们在com.littlewaterdrop.validation包中创建两个新的标注@NotEmpty和@LengthConstraint。@NotEmpty用于检查字段是否为空。当字符串对象为null或者长度为0时,则违反了@NotEmpty的检查条件。@LengthConstraint标注包含两个成员变量min和max。这两个字段都是可选的。min的默认值为0;max的默认值为50。当字段为字符串,且短于min的值或者长于max的值时,该字段违反了@LengthConstraint的检查条件。

public @interface NotEmpty {
}

public @interface LengthConstraint {
    int min() default 10;
    int max() default 50;
}

步骤二

我们在ReportGeneratorBuilder的方法中使用上述两个标注来检查输入的title、name、introduction和pointOfView。根据上述的要求,我们将

  1. 在标题title上使用@LengthConstraint;min的值为10;max的值为50。
  2. 在姓名name上使用@NotEmpty。
  3. 在问题介绍introduction和pointOfView上使用@NotEmpty和@LengthConstraint,max的值为500。

步骤三

我们在com.littlewaterdrop.validation包中创建一个新类ConstraintValidator。它有一个静态方法validate(),接收一个输入参数obj,类型为Object。validator()方法根据参数对象上的标注信息来验证对象的值。如果对象没有使用任何用于验证的标注信息的话,直接返回true。如果对象满足校验,则返回true。否则返回false。

public class ConstraintValidator {
    public static boolean validate(Object obj);
}

参考文档

  1. Java编程语言的基本概念
  2. 设计模式
  3. Maven工程管理工具
Copyright  2019 Little Waterdrop, LLC. All Rights Reserved.