java自定义注解使用(适合入门级)

  • 自己百度了一圈也没有发现写得简单明了的注解使用跟代码,所以自己就整理写了一套超简单的代码,让初学者可能很快入门,并且了解注解是干嘛的
  • 读取注解的主要方式getAnnotations() 分别是class类、Method(读取类中的方法)、Field类(读取类中的所有变量)

项目应用场景

  1. 导出Excel 作者:ThinkGem,Jeesite框架
  2. 数据验证 hibernate的数据验证
  3. 方法跟变量说明(比如说前端要使用这个说明并进行只能提示)spiderflow爬虫框架中

自定义注解类

关于头部的几个注解,就自行百度,大致意思就是控制这个注解是注解到 方法、类、变量等~~~

package com.test.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

/**
 * 自定义注解类
 * 
 * @author 86517
 *
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
// @Target(ElementType.ANNOTATION_TYPE)
public @interface Comment {
	String value() default "";

	String name() default "";

	int max() default 0;;

	int min() default 0;;
}

实体类

package com.test.e;

import com.test.annotation.Comment;

@Comment("注解在类上")
public class Executors {

	@Comment(value = "注解在变量上value", name = "注解在变量上")
	private int tst;

	@Comment("注解在方法上")
	public static void name() {

	}

	@Comment(value = "注解在get方法上", max = 100)
	public int getTst() {
		return tst;
	}

	@Comment("注解在set方法上")
	public void setTst(int tst) {
		this.tst = tst;
	}

}
  • 读取注解信息,简单实现数据验证原理 hibernate也有一个注解验证ps:可能原理也都差不多,
package com.test.main;

import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

import com.test.annotation.Comment;
import com.test.e.Executors;

public class Main {
	public static void main(String[] args) throws Exception {
		// 读取类上的注解
		Annotation[] a = Executors.class.getAnnotations();
		// 读取注解
		Comment comment = Executors.class.getAnnotation(Comment.class);
		System.out.println(comment.value());
		for (Annotation annotation : a) {
			System.out.println(annotation);
		}

		// 读取这个类上的所有方法上的注解
		Method[] b = Executors.class.getDeclaredMethods();
		for (Method method : b) {
			// 读取注解
			Comment commentMethod = method.getAnnotation(Comment.class);
			System.out.println(commentMethod.value());
			for (Annotation annotation : method.getAnnotations()) {
				System.out.println(annotation);
			}
		}

		// 读取这个类上所有的变量上的注解
		Field[] c = Executors.class.getDeclaredFields();
		for (Field field : c) {
			// 读取注解
			Comment commentField = field.getAnnotation(Comment.class);
			System.out.println(commentField.value() + "=============" + comment.name());
			for (Annotation annotation : field.getAnnotations()) {
				System.out.println(annotation);
			}
		}

		// 实战演练
		// 验证数据值是否大于注解的值
		// max注解值=100
		// 读取这个类上的所有方法上的注解
		Executors executors = new Executors();
		executors.setTst(1000);
		Field[] c1 = executors.getClass().getDeclaredFields();
		for (Field field : c1) {
			// 读取注解
			Comment commentField = field.getAnnotation(Comment.class);
			System.out.println(commentField.value() + "=============" + comment.name());
			for (Annotation annotation : field.getAnnotations()) {
				System.out.println(annotation);
			}
			if (commentField.max() < executors.getTst()) {
				System.out.println("验证不通过");
			}
		}

	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值