Discuss / Java / 【疑问】-注解使用的疑惑

【疑问】-注解使用的疑惑

Topic source

例如上面的例子,为什么一定要用注解来检查定义的字段是否符合要求呢?

在类的构造方法里面检查传入的参数不行吗?如果参数不符合规则直接抛出异常

求解答

感觉从文章中列出的例子,没看出注解存在什么特别的优势或者说好用的地方??

如上文例子所示,如果Person类包含了name、city等类似的n个String类型的成员

如果你在构造方法里检查,需要写n个判断

如果用注解的话,只需要在每个成员前加上注解,然后写一个检查方法就可以检查所有的成员是否满足条件

还有就是如果在构造方法里判断的话,实例化后用setter赋值也是没法check的,除非在每个setter里也写判断

这样写代码量肯定剧增,而且除此之外如果想要修改条件的话,需要在构造方法和setter里分别去改,不如注解修改条件方便

以上仅为个人理解,如有不对欢迎指正

注解,便于底层框架,对多个类的成员变量进行相同规则的check逻辑

比如要写多个类,Person、Address、Program等,每个类的String类成员变量,都要进行长度的校验。

在每个构造方法里单独处理成员变量的校验,那每个类都要写一遍

但用注解,只写一个check,然后每个类的成员变量在定义时,加上注解就好了

现有上万个类,每个类的检验规则不同。

A类,String要符合a规则。

B类,String要符合b规则。

...

...

去写吧。你if的快还是我@的快。。。

使用注解更直观一些,可以直接看到某个字段的限制条件。就本文例子而言,在 check 方法中利用反射获取 person 的所有字段、每个字段定义的 Range 注解,如果 Range 注解存在,如果对应的字段是 String,判断字段是否满足 Range 注解的 min/max,不满足就抛出异常。(其实就是文中的注释你仔细再品一品)

假设不使用注解,也是可以实现字段验证的方法。但是在这个方法中你需要先判断字段,再设定字段的验证条件(其实这就是注释帮你实现的)。如果新增一个需要验证的字段(假设仍然是验证字符串长度),你仍需要在这个方法中增加一个判断。但是如果使用注解,你可以直接在增加的这个需要验证的字段上标记注解和限制参数,而 check 方法并不需要改变。因为 check 中利用反射可以获取新增的字段和这个字段的注解。但是 check 方法仍然需要在需要时手动调用。

这就是小白思维:在类的构造方法里面检查传入的参数不行吗?如果参数不符合规则直接抛出异常

1000个类是不是 写1000个构造方法 判断???

🌙

#8 Created at ... [Delete] [Delete and Lock User]

解耦

🌙

#9 Created at ... [Delete] [Delete and Lock User]

主要还是解耦,数量还不是主要的,比如我今天是大于10,明天是小于10,每次都要改构造方法?

0

#10 Created at ... [Delete] [Delete and Lock User]

嘿嘿,一般都是用框架的注解0/0,


  • 1

Reply