问题描述
java中自定义Annotation时,是不是一定要为每一个注释成员斌值呢,不知道javax.persistence.Column注释是怎么实现的使用javax.persistence.Column时为什么不用为每一个注释成员斌值。本人现做一个小测验如下:一、Validate.java,验证用的注解package com.wanghaisheng.generator.support;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;@Target({java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.FIELD})@Retention(RetentionPolicy.RUNTIME)public @interface Validate {//必输字段boolean required();//最小长度 public abstract int minLength();//最大长度public abstract int maxlength();//[3,10] 长度介于 3 和 {1} 之间的字符串 public abstract String rangelength();//[100,1000] 只能是100和 1000 之间的值public abstract String range();//最小值public abstract long min();//最大值public abstract long max();//验证邮箱public abstract boolean email();//验证是否是合法的网址public abstract boolean url();//验证是否是合法的日期 new Date() 类型格式public abstract boolean date();//验证是否是合法的日期 年/月/日 或 年-月-日 格式public abstract boolean dateISO();//验证是否是合法的数字public abstract boolean number();//验证是否为整数public abstract boolean digits();//验证合法的信用卡号public abstract boolean creditCard();//要匹配的元素如:’#cnfpass’ , 验证两次输入值是否相同public abstract String equalTo();//“gif|png|jpg” 验证是否是合法后缀名的字符串public abstract String accept();}然后我定义一个POJO使用该注解二、User.javapackage com.wanghaisheng.model;import com.wanghaisheng.generator.support.Validate;public class User {private String userName;private String password;@Validate(accept = "", creditCard = false, date = false, dateISO = false, digits = false, email = false, equalTo = "", max = 0, maxlength = 0, min = 0, minLength = 0, number = false, range = "", rangelength = "", required = false, url = false)public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}各位大侠,能不能邦小弟实现使用Validate注解时只为其中的几个成员斌值,或不用为他们斌值,如: @Validate(email = true)public String getUserName() {return userName;}而不用当使用Validate注解时加上那么一大堆难看的无用的代码。我知道javax.persistence.Column注解是能够实现的。大侠们,望快点伸出援手啊,小弟急啊 问题补充:lizhi92574 写道
解决方案
可以再声明的时候使用默认值public abstract boolean creditCard() default false;