首页 > 编程语言 >java 用反射获取自定义注解的信息实例

java 用反射获取自定义注解的信息实例

时间:2022-09-03 15:26:19浏览次数:61  
标签:java name 自定义 age id user 注解 annotation

最近看了些spring的源码,回来重新看一下反射和注解的一些文档,写了一个小例子,记录一下。
package com.wbk.annotation;

import java.lang.annotation.*;
import java.lang.reflect.Field;

public class ReflectionAndAnnotation {
public static void main(String[] args) throws ClassNotFoundException {

//获得类的class对象
Class c1 = Class.forName("com.wbk.annotation.user");

//获得class对象的注解列表
Annotation[] annotations = c1.getAnnotations();

//打印类注解信息
for (Annotation annotation : annotations) {
System.out.println("注解列表:"+annotation);
}
//获得class的特定注解信息
Annotation annotation = c1.getAnnotation(table_name.class);
System.out.println("user的类注解:"+annotation);

System.out.println("==========================================================");

//获得class对象的属性列表
Field[] declaredFields = c1.getDeclaredFields();
for (Field declaredField : declaredFields) {
//获得属性的注解列表
Annotation[] annotations1 = declaredField.getAnnotations();
for (Annotation annotation1 : annotations1) {
//属性注解列表信息打印
System.out.println(declaredField.getName()+":"+annotation1);
}
}
}
}

/**
* 要映射的user对象,加入自定的类注解和属性注解
*/
@table_name("db_user")
class user {

@field_data(column="user_id",type = "varchar",length = 10)
private int id;
@field_data(column="user_age",type = "varchar",length = 10)
private int age;
@field_data(column="user_name",type = "varchar",length = 10)
private String name;


public user(String name, int id, int age) {
this.name = name;
this.id = id;
this.age = age;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getId() {
return id;
}

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

public int getAge() {
return age;
}

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

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
/**
* 自定义类注解
*/
@interface table_name{
String value();
}

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
/**
* 自定义属性注解
*/
@interface field_data{
String column() default "";
String type() default "";
int length() default 0;
}

控制台打印结果:

注解列表:@com.wbk.annotation.table_name(value=db_user)
user的类注解:@com.wbk.annotation.table_name(value=db_user)
==========================================================
id:@com.wbk.annotation.field_data(type=varchar, length=10, column=user_id)
age:@com.wbk.annotation.field_data(type=varchar, length=10, column=user_age)
name:@com.wbk.annotation.field_data(type=varchar, length=10, column=user_name)



标签:java,name,自定义,age,id,user,注解,annotation
From: https://www.cnblogs.com/zenigeba/p/16652641.html

相关文章

  • 力扣20(java)-有效的括号(简单)
    题目:给定一个只包括'(',')','{','}','[',']' 的字符串s,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括......
  • java学习9.3-重写
    1.重写:子类继承父类以后,可以对父类中同名同参数的方法,进行覆盖操作2.应用:重写以后,当创建子类对象以后,通过子类对象调用子父类中的同名同参数的方法时,实际执行的是子类重写......
  • 用文本文档写第一个java程序并用命令行运行
    新建一个文本文档,后缀是java  编辑以下代码:classHellochina{publicstaticvoidmain(String[]args){System.out.println("hello");}......
  • [javascript] 构造函数与原型对象 +原型链
    构造函数与原型对象1、使用工厂方法创建对象functioncreatePerson(name,age,gender){//创建一个新的对象varobj=newObject();//向对象中添加属性......
  • 自定义控件——改造已有的控件——自定义月份选择器
         //由日期选择器派生出月份选择器publicclassMonthPickerextendsDatePicker{publicMonthPicker(Contextcontext,AttributeSetattrs){......
  • Java 使用flink读写kafka中的数据(windows下)
    一、启动服务(网上查)1、启动zookeeper2、启动kafka3、启动flink二、写producerpublicvoidkafkaProducer(List<ResultBean>opcValue)throwsException{......
  • 自定义控件——视图的构建过程——视图的绘制方法
    视图绘制有两种方法,分别是onDraw和dispatchDraw,它们的区别主要有下列两点: (1)onDraw既可用于普通控件,也可用于布局类视图;而dispatchDraw专门用于布局类视图,像线性布局Line......
  • [javascript] 自调用函数
    自调用函数(IIFE)作用1.隐藏实现2.利用局部作用域,避免污染全局命名空间3.用它编写js模块(function(){vara=3;console.log(a+3);})();......
  • Spring 中使用自定义的 ThreadLocal 存储导致的坑
    Spring中有时候我们需要存储一些和Request相关联的变量,例如用户的登陆有关信息等,它的生命周期和Request相同。一个容易想到的实现办法是使用ThreadLocal:pub......
  • java环境变量配置
    安装好java和jdk之后,对环境进行配置。  ================  上面的administrator是用户变量,下面为系统变量,上面或者下面都可以配置,这里选择配置系统变量。  先......