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开发(注解)的主要内容,如果未能解决你的问题,请参考以下文章

java web开发(学习路线)

java web开发(学习路线)

java web开发(web 语言开发pk)

java web开发(web 语言开发pk)

java web开发(web 语言开发pk)

java web开发(反射)