使用自定义注解将一个实体属性有序分成两组
自定义注解
@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface AnnotationTest { public enum Obj{A, B}; public Obj obj(); public int index() default Integer.MAX_VALUE; }
实体的使用注解
public class Person { private String username;//姓名 private int sex;//性别 private int age;//年龄 private String cardNo;//证件号 private String job; private Double salary; private String Address; @AnnotationTest(obj = Obj.A, index = 1) public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } @AnnotationTest(obj = Obj.A, index = 2) public int getSex() { return sex; } public void setSex(int sex) { this.sex = sex; } @AnnotationTest(obj = Obj.A, index = 3) public int getAge() { return age; } public void setAge(int age) { this.age = age; } @AnnotationTest(obj = Obj.A, index = 4) public String getCardNo() { return cardNo; } public void setCardNo(String cardNo) { this.cardNo = cardNo; } @AnnotationTest(obj = Obj.B, index = 1) public String getJob() { return job; } public void setJob(String job) { this.job = job; } @AnnotationTest(obj = Obj.B, index = 2) public Double getSalary() { return salary; } public void setSalary(Double salary) { this.salary = salary; } @AnnotationTest(obj = Obj.B, index = 3) public String getAddress() { return Address; } public void setAddress(String address) { Address = address; } }
比较器排序
public class MethodComparator implements Comparator<Method> { @Override public int compare(Method o1, Method o2) { AnnotationTest at1 = o1.getAnnotation(AnnotationTest.class); AnnotationTest at2 = o1.getAnnotation(AnnotationTest.class); if(at1.index() < at2.index()) { return 1; } else if(at1.index() > at2.index()) { return -1; } else { return 0; } } }
测试
public class Test { public static void main(String[] args) { testAnnotation(); } public static void testAnnotation() { Person p = new Person(); p.setUsername("share"); p.setAge(25); p.setSex(1); p.setCardNo("123456"); p.setJob("intenet"); p.setSalary(12345.0); p.setAddress("shanghai"); List<Method> methodA = getMethod(p, Obj.A); List<Method> methodB = getMethod(p, Obj.B); for (Method method : methodA) { if(method.getName().startsWith("get")) { try { System.out.println(method.invoke(p)); } catch (Exception e) { e.printStackTrace(); } } } System.out.println("==========================="); for (Method method : methodB) { if(method.getName().startsWith("get")) { try { System.out.println(method.invoke(p)); } catch (Exception e) { e.printStackTrace(); } } } } /** * 对象分类存储 * 2015年10月25日 caifan * @param p * @param obj * @return */ public static List<Method> getMethod(Person p, Obj obj) { Method[] methods = p.getClass().getDeclaredMethods(); List<Method> methodList = new ArrayList<Method>(); for (Method method : methods) { AnnotationTest at = method.getAnnotation(AnnotationTest.class); if(method.isAnnotationPresent(AnnotationTest.class) && method.getName().startsWith("get")){ if(at.obj() == obj){ methodList.add(method); } } } MethodComparator mc = new MethodComparator(); Collections.sort(methodList, mc); return methodList; } }
输出结果:(结果根据注解中的Obj 和 index 分成了两类)
share
1
25
123456
===========================
shanghai
intenet
12345.0
相关推荐
简单demo,导入即可运行。
通过一个超市的自动售卖机的例子,详细说明了java的自定义注解的使用。
自定义注解结合Hutool对SpringBoot接口返回数据进行脱敏 自定义注解结合Hutool对SpringBoot接口返回数据进行脱敏 自定义注解结合Hutool对SpringBoot接口返回数据进行脱敏 自定义注解结合Hutool对SpringBoot接口返回...
这个一个自定义注解实现给注解传递伪动态参数的小案例,可以在此自定义注解的基础上来记录接口的调用记录。
java 自定义注解验证 可自己添加所需要的注解,本案例中只写了三个自定义注解类 本案例只花了半天时间,如有不好之处请多提提意见。谢谢!
SpringBoot AOP各种注解、自定义注解、鉴权使用案例SpringBoot AOP各种注解、自定义注解、鉴权使用案例SpringBoot AOP各种注解、自定义注解、鉴权使用案例
自定义注解得使用,模拟spring通过注解方式创建bean实例!
3、对spring aop认识模糊的,不清楚如何实现Java 自定义注解的 4、想看spring aop 注解实现记录系统日志并入库等 二、能学到什么 1、收获可用源码 2、能够清楚的知道如何用spring aop实现自定义注解以及注解的逻辑...
自定义注解实现拦截sql,并在sql中增加相应的条件 。 对应博客: https://blog.csdn.net/qq_37716298/article/details/120659139
包括Java自定义注解以及包括自定义注解的应用实例。以及注解相关知识的注解
在这个教程当中,我们将学习Java的注解,如何定制注解,注解的使用以及如何通过反射解析注解。 Java1.5引入了注解,当前许多java框架中大量使用注解,如Hibernate、Jersey、Spring。注解作为程序的元数据嵌入到程序...
excel导入动态校验,自定义注解动态校验
看到别的博主写的几篇接绍注解相关的东西,觉得挺好的,mark一下 ... 自定义注解:...主要就是自定义了注解,使用了自定义注解,然后利用java的反射机制根据注解生成不同的sql语句
自定义java注解开发,javabean中某方法添加该自定义注解,配置该方法相关信息指标,通过全局扫描该注解获取全部方法及相关指标,自动执行方法(本demo用于系统监控开发)
springboot 脱敏自定义注解 SpringAOP
java自定义注解实践,介绍详细!值得参考
自定义注解,与注解解释器,并且实例化使用注解的类
spring自定义注解样例
spring中自定义注解(annotation)与AOP中获取注解.通过实例演示自定义注解。