国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

java Annotation Demo

2019-11-14 23:08:15
字體:
供稿:網(wǎng)友
java Annotation Demo

Java 1.5引入了annotation,這個功能非常好用,是用c#等語言借鑒過來的一個特性。

首先編譯器本身支持一些像overrides,suPResswarning之類的注解。

Spring,junit等框架也自己寫并且處理自己定義的注解,讓java具有了一些聲明式編程的一些特點(diǎn),而且減少了代碼量。

下面的示例是一個簡單的自定義注解,自定義的注釋的處理需要自己去維護(hù)。

下面的應(yīng)用寫得不好,例如在web編程中,我們可以根據(jù)java bean的一些fields的注解,自動生成相應(yīng)的Structs驗證標(biāo)簽之類的

可以更快捷地完成jsp頁面的開發(fā)。

import java.lang.annotation.Annotation;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;import java.lang.reflect.Field;import java.util.regex.Pattern;@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)@interface EmailAddress {}class student {    String sname;    int sid;    @EmailAddress    String email;    public student(int _sid, String _sname, String _email) {        sid = _sid;        sname = _sname;        email = _email;    }    public String toString() {        return "id:" + sid + "sname:" + sname + " email:" + email;    }}class emailValidator {    static boolean isvalidemail(String email) {        Pattern ptn = Pattern                .compile("^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?://.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?//.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$");        return ptn.matcher(email).matches();    }    public static void checkEmailType(Object obj,            Class<? extends Annotation> antcls)            throws IllegalArgumentException, IllegalaccessException {        Class<?> cls = obj.getClass();        for (Field field : cls.getDeclaredFields()) {            if (field.isAnnotationPresent(antcls)) {                if (antcls.isAssignableFrom(EmailAddress.class)) {                    if (!isvalidemail(field.get(obj).toString())) {                        try {                            System.out.println("Anotation " + antcls.getName()                                    + " validate is not pass for value:"                                    + "class " + obj.getClass().getName()                                    + " field " + field.getName() + ":"                                    + field.get(obj).toString());                        } catch (Exception e) {                            e.printStackTrace();                        }                    }                }            }        }    }}public class testAnnotation {    public static void main(String[] args) throws IllegalArgumentException,            IllegalAccessException {        student s = new student(1, "yaoshuya", "yaoshuya@ss.dd.dfd..com");        System.out.println(student.class.isAssignableFrom(s.getClass()));        emailValidator.checkEmailType(s, EmailAddress.class);        // System.out.println(emailValidator.isvalidemail(s.email));    }}

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 杭锦后旗| 禄丰县| 古蔺县| 临武县| 济南市| 龙州县| 望江县| 南乐县| 融水| 葵青区| 浑源县| 五台县| 阿克| 华蓥市| 沂源县| 石家庄市| 柳河县| 墨竹工卡县| 万全县| 内江市| 乌拉特中旗| 阿尔山市| 奎屯市| 广德县| 琼海市| 巴青县| 云林县| 松原市| 镶黄旗| 闵行区| 儋州市| 沙洋县| 宁陵县| 普格县| 富源县| 孟津县| 读书| 宁都县| 成安县| 麦盖提县| 龙门县|