java web开发(注解)
Posted 嵌入式-老费
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java web开发(注解)相关的知识,希望对你有一定的参考价值。
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
注解也是蛮有意思的。个人来看,它更多是一种偷懒的处理方法。一种常见的场景是这样的,如果我们希望对某一种类型的数据来做判断,那么就是在每个函数开始的位置添加各种各样的判断语句。如果数据比较少的话,尚可接受;但是数据一多,整个代码就显得非常臃肿。
下面,我们就通过一个简单的例子,看看注解如何使用,
1、定义注解
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@interface Range
int min() default 0;
int max() default 255;
注解的定义比较简单,只要看看@interface这个关键字在哪,@interface后面那个变量就是注解名。在它的上方有两个元注解,一个是@Retention,一个是@Target。Retention告诉编译器,这个Range是在系统运行的时候使用的。而Target告诉编译器,这个注解用于类变量来使用的。在Range注解中,定义了两个变量,一个是min,一个是max。min的默认数值是0,max默认是255。
2、注解使用
class Human
@Range(min=1, max=20)
public String name;
@Range(max=10)
public String city;
注解的使用非常简单。既然前面谈到Range主要用于类变量,那么直接把Range添加到对应变量的头部就可以了。如果需要修改数值的话,重新设定min和max即可。
3、注解的分析和调用
public static boolean check(Human h)
for (Field field:h.getClass().getFields())
Range r = field.getAnnotation(Range.class);
if(r != null)
try
Object o = field.get(h);
if(o instanceof String)
String s = (String) o;
if(s.length() < r.min() || s.length() > r.max())
return false;
catch(IllegalAccessException ill)
return false;
return true;
public static void test10()
Human h = new Human();
h.city = "yancheng";
h.name = "tom";
System.out.println(check(h));
如上面代码所示,有两个函数,一个是test10,一个是check。前者主要是创建一个human对象,赋值之后用check函数来判断city和name本身是否符合要求。
check函数中,首先还是通过getClass获得Class数据类型,进而通过getFields获取所有的类变量。关键的一步来了,这个时候可以通过getAnnotation获得注解Range。如果Range不为空的话,就可以通过field.get获得数据,将获得的数据与注解中的min、max进行判断,这样注解的功能不久可以实现了。
4、其他
当然注解的功能不止于此。大家在web开发中经常看到的controller注解也是一种场景。开发的时候灵活运用注解,有的时候确实可以帮助我们节省很多的工作量。代码看上去也清爽一些。
以上是关于java web开发(注解)的主要内容,如果未能解决你的问题,请参考以下文章