博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自定义注解
阅读量:4966 次
发布时间:2019-06-12

本文共 2337 字,大约阅读时间需要 7 分钟。

问题

如何通过注解值得到对应成员变量?

学习注解

自定义注解

@Inherited@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)public @interface Index {    String name() default "";}

定义User类

import lombok.Getter;import lombok.Setter;@Setter@Getterpublic class User {    @Index(name = "userNo")    private int userId;    @Index(name = "Name")    private String userName;}

其中lombok的依赖配置为

org.projectlombok
lombok
1.18.2
  

测试注解

public class UserTest {    private void test1() {        Class
clazz = User.class; Field[] fields = clazz.getDeclaredFields(); List
result = new ArrayList<>(); for (Field field : fields){ if(field.getAnnotation(Index.class)!=null) { result.add(field); } } for(Field list:result){ System.out.println("被注解的字段为:" + list.getName()); } } private void test2() { Class
clazz = User.class; Field[] fields = clazz.getDeclaredFields(); List
result = new ArrayList<>(); for (Field field : fields){ if(field.getAnnotation(Index.class)!=null) { result.add(field.getAnnotation(Index.class).name()); } } for(String list:result){ System.out.println("注解的字段为:" + list); } } public static void main(String[] args) { UserTest userTest = new UserTest(); userTest.test1(); userTest.test2(); }}

结果

被注解的字段为:userId被注解的字段为:userName注解的字段为:userNo注解的字段为:Name

解决

private void test3() {        Map
annotation2Field = new HashMap<>(); Class
clazz = User.class; Field[] fields = clazz.getDeclaredFields(); List
result = new ArrayList<>(); for (Field field : fields){ if(field.getAnnotation(Index.class)!=null) { result.add(field.getAnnotation(Index.class).name()); annotation2Field.put(field.getAnnotation(Index.class).name(), field.getName()); } } annotation2Field.forEach((k, v)-> System.out.println(k + ":" + v)); }

 

转载于:https://www.cnblogs.com/kaituorensheng/p/9813664.html

你可能感兴趣的文章
MyEclipse连接SQL Server 2008数据库的操作方法
查看>>
学习ES6--data1
查看>>
js动画性能提升笔记
查看>>
SqlCel 和MySQL for Excel在批量处理数据上的优劣
查看>>
详解http和https的作用与区别
查看>>
Eclipse配置PyDev不成功的解决办法
查看>>
花了一天读了《游戏设计快乐之道》
查看>>
策略模式
查看>>
python中的锁lock=threading.Lock()
查看>>
AJAX
查看>>
关于课堂上Exercise#1的讨论
查看>>
滚动加载图片(懒加载)
查看>>
PHP常用框架.md
查看>>
Html5学习之旅-html5的留言记事本开发(17)
查看>>
leetcode【67】-Bulb Switcher
查看>>
JS验证图片格式和大小并预览
查看>>
django-vue之信息过滤(过滤课程)
查看>>
Linux操作系统学习_用户态与内核态之切换过程
查看>>
Mac 10.12安装XMind
查看>>
js插件-alert,confirm,tip,loading
查看>>