java length注解_Java注解

3eec26e496eed162773e0078b14e4fac.png

f0c5b0b330dceb0ca485dd6e32955efc.png

62d54a8b15bb529a1f8f3b79eb6bd3cc.png

79ea5182bff85842506dabd8431fcb33.png

58144f8149e836cf09b4300b7f50ec56.png

24b056cc370ee2c0da6eb381f1f6c953.png

前面都是抄的别人的,发点自己的东西

package 注解.反射读取;

import java.lang.annotation.ElementType;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;

@Target(value = ElementType.TYPE)//修饰类

@Retention(value = RetentionPolicy.RUNTIME)

public @interface SxtTable

{

String value();

}

package注解.反射读取;importjava.lang.annotation.ElementType;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;importjava.lang.annotation.Target;//用来说明SXtStudent 里面的属性特性

@Target(value=ElementType.FIELD)

@Retention(RetentionPolicy.RUNTIME)public @interfaceSxtFiled

{

String columnName();

String type();intlength();

}

package注解.反射读取;

@SxtTable("tb_table")public classSxtStudent

{

@SxtFiled(columnName= "id",type="int",length = 10)private intid;//对属性做了说明,

@SxtFiled(columnName= "sname",type="varchar",length = 10)privateString StudentName;

@SxtFiled(columnName= "age",type="int",length = 3)private intage;public intgetId()

{returnid;

}public void setId(intid) {this.id =id;

}publicString getStudentName() {returnStudentName;

}public voidsetStudentName(String studentName) {

StudentName=studentName;

}public intgetAge() {returnage;

}public void setAge(intage) {this.age =age;

}

}

package 注解.反射读取;

import java.lang.annotation.Annotation;

import java.lang.reflect.Field;

//反射读取ANN

public class DEMO

{

public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException

{

Class Clazz= Class.forName("注解.反射读取.SxtStudent");//包含对应类的全部信息 包含注解

// Annotation annot[]=Clazz.getAnnotations();//获取注解

// for(Annotation a:annot)

// {

// System.out.println(a);

// }

//直接获得特定的注解

// SxtTable st= (SxtTable) Clazz.getAnnotation(SxtTable.class);

// System.out.println(st);

//获得对应类的属性的注解

Field f=Clazz.getDeclaredField("StudentName");

System.out.println(f);

SxtFiled sxtf=f.getAnnotation(SxtFiled.class);

System.out.println(sxtf);

System.out.println(sxtf.columnName());

System.out.println(sxtf.length());

System.out.println(sxtf.type());

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中,可以通过自定义注解来进行数据验证。下面是一个简单的例子: 1. 定义注解 ```java @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface MyAnnotation { String value() default ""; int minLength() default 0; int maxLength() default Integer.MAX_VALUE; String regex() default ""; } ``` 这个注解可以用在类的字段上,可以指定字段的值、最小长度、最大长度和正则表达式。 2. 使用注解 ```java public class User { @MyAnnotation(minLength = 3, maxLength = 10, regex = "[a-zA-Z0-9_]+") private String username; // getter and setter } ``` 在这个例子中,我们给User类的username字段加上了MyAnnotation注解,并指定了最小长度为3,最大长度为10,只能包含字母、数字和下划线。 3. 验证数据 ```java public class Validator { public static boolean validate(Object obj) throws IllegalAccessException { Class<?> clazz = obj.getClass(); for (Field field : clazz.getDeclaredFields()) { MyAnnotation annotation = field.getAnnotation(MyAnnotation.class); if (annotation != null) { field.setAccessible(true); String value = (String) field.get(obj); if (value == null || value.length() < annotation.minLength() || value.length() > annotation.maxLength() || !value.matches(annotation.regex())) { return false; } } } return true; } } ``` 这个Validator类可以用来验证任意对象的字段是否符合注解的要求。它通过反射获取对象的所有字段,并检查是否有MyAnnotation注解,然后根据注解的要求验证字段的值。 使用方法: ```java public static void main(String[] args) throws IllegalAccessException { User user = new User(); user.setUsername("abc_123"); boolean isValid = Validator.validate(user); System.out.println(isValid); // true } ``` 在这个例子中,我们创建了一个User对象,并将username设置为"abc_123",然后使用Validator类来验证这个对象的所有字段是否符合注解的要求。由于username符合要求,所以验证结果为true。 这样,我们就可以通过自定义注解来进行数据验证了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值