【疑问】-注解使用的疑惑
Topic source如上文例子所示,如果Person类包含了name、city等类似的n个String类型的成员
如果你在构造方法里检查,需要写n个判断
如果用注解的话,只需要在每个成员前加上注解,然后写一个检查方法就可以检查所有的成员是否满足条件
还有就是如果在构造方法里判断的话,实例化后用setter赋值也是没法check的,除非在每个setter里也写判断
这样写代码量肯定剧增,而且除此之外如果想要修改条件的话,需要在构造方法和setter里分别去改,不如注解修改条件方便
以上仅为个人理解,如有不对欢迎指正
注解,便于底层框架,对多个类的成员变量进行相同规则的check逻辑
比如要写多个类,Person、Address、Program等,每个类的String类成员变量,都要进行长度的校验。
在每个构造方法里单独处理成员变量的校验,那每个类都要写一遍
但用注解,只写一个check,然后每个类的成员变量在定义时,加上注解就好了
使用注解更直观一些,可以直接看到某个字段的限制条件。就本文例子而言,在 check 方法中利用反射获取 person 的所有字段、每个字段定义的 Range 注解,如果 Range 注解存在,如果对应的字段是 String,判断字段是否满足 Range 注解的 min/max,不满足就抛出异常。(其实就是文中的注释你仔细再品一品)
假设不使用注解,也是可以实现字段验证的方法。但是在这个方法中你需要先判断字段,再设定字段的验证条件(其实这就是注释帮你实现的)。如果新增一个需要验证的字段(假设仍然是验证字符串长度),你仍需要在这个方法中增加一个判断。但是如果使用注解,你可以直接在增加的这个需要验证的字段上标记注解和限制参数,而 check 方法并不需要改变。因为 check 中利用反射可以获取新增的字段和这个字段的注解。但是 check 方法仍然需要在需要时手动调用。
- 1
爱竹子的大黑熊
例如上面的例子,为什么一定要用注解来检查定义的字段是否符合要求呢?
在类的构造方法里面检查传入的参数不行吗?如果参数不符合规则直接抛出异常