注解与反射

Love The Way You Lie 2023-01-22 11:59 105阅读 0赞
  1. package com.company;
  2. import java.lang.annotation.*;
  3. import java.lang.reflect.Field;
  4. public class test3 {
  5. public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException {
  6. Class c1 = Class.forName("com.company.Student2");
  7. //通过反射获得注解
  8. Annotation[] annotations = c1.getAnnotations();
  9. for (Annotation annotation:annotations){
  10. System.out.println(annotation);
  11. }
  12. //获得注解的value的植
  13. annon annotations1 = (annon) c1.getAnnotation(annon.class);
  14. String value = annotations1.value();
  15. System.out.println(value);
  16. //获得id类指定的注解
  17. Field id = c1.getDeclaredField("id");
  18. bnnon annotation = id.getAnnotation(bnnon.class);
  19. System.out.println(annotation.columnName());
  20. System.out.println(annotation.type());
  21. System.out.println(annotation.length());
  22. Field age = c1.getDeclaredField("age");
  23. bnnon annotationage = age.getAnnotation(bnnon.class);
  24. System.out.println(annotationage.columnName());
  25. System.out.println(annotationage.type());
  26. System.out.println(annotationage.length());
  27. Field name = c1.getDeclaredField("age");
  28. bnnon annotationagename = name.getAnnotation(bnnon.class);
  29. System.out.println(annotationagename.columnName());
  30. System.out.println(annotationagename.type());
  31. System.out.println(annotationagename.length());
  32. }
  33. }
  34. @annon("biaoming")
  35. class Student2{
  36. @bnnon(columnName = "db_id",type = "int",length = "1")
  37. private int id;
  38. @bnnon(columnName = "db_age",type = "int",length = "3")
  39. private int age;
  40. @bnnon(columnName = "db_name",type = "String",length = "4")
  41. private String name;
  42. public Student2(int id, int age, String name) {
  43. this.id = id;
  44. this.age = age;
  45. this.name = name;
  46. }
  47. public Student2() {
  48. }
  49. public int getId() {
  50. return id;
  51. }
  52. public void setId(int id) {
  53. this.id = id;
  54. }
  55. public int getAge() {
  56. return age;
  57. }
  58. public void setAge(int age) {
  59. this.age = age;
  60. }
  61. public String getName() {
  62. return name;
  63. }
  64. public void setName(String name) {
  65. this.name = name;
  66. }
  67. @Override
  68. public String toString() {
  69. return "Student2{" +
  70. "id=" + id +
  71. ", age=" + age +
  72. ", name='" + name + '\'' +
  73. '}';
  74. }
  75. }
  76. @Target({ ElementType.TYPE,ElementType.METHOD})
  77. @Retention(RetentionPolicy.RUNTIME)
  78. @interface annon{
  79. String value();
  80. }
  81. @Target({ ElementType.FIELD})
  82. @Retention(RetentionPolicy.RUNTIME)
  83. @interface bnnon{
  84. String columnName();
  85. String type();
  86. String length();
  87. }

发表评论

表情:
评论列表 (有 0 条评论,105人围观)

还没有评论,来说两句吧...

相关阅读

    相关 注解反射

    注解(Annotation)是Java中的一种元数据,它提供了一种为程序元素(类、方法、变量等)添加元数据的方式。注解可以用来描述程序元素的特性、用途和约束条件等信息。Java

    相关 注解反射

    注解(Annotation)是Java中的一种元数据,它提供了一种为程序元素(类、方法、变量等)添加元数据的方式。注解可以用来描述程序元素的特性、用途和约束条件等信息。Java

    相关 注解反射

    注解 什么是注解 Annotation(注解)是从JDK5.0开始引入的新技术 注解可以被其他程序(如:编译器等)读取,不是程序本身,可以对程序做出解释

    相关 反射注解

    反射与注解 一、反射 1. 使用反射机制可以动态的获取当前class的信息,比如方法的信息、注解信息、方法的参数、属性 2. 反射目的:方便开发者对框架的拓展,

    相关 JAVA反射注解

    JAVA反射与注解 前言 现在在我们构建自己或公司的项目中,或多或少都会依赖几个流行比较屌的第三方库,比如:Butter Knife、Retrofit 2、Dagge