反射-操作注解

反射操作注解

getAnnotations
getAnnotation

 

复制代码
package 反射;//练习反射操作注解

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

public class Mai2n {
    public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException{
    Class c1=Class.forName("反射.Student1");//通过反射获得class对象
    //通过反射获得注解
    Annotation[] annotations=c1.getAnnotations();//getAnnotations:获取全部注解
    for(Annotation annotation:annotations){
        System.out.println(annotation);
    }
    //获得注解vlaue的值
    TableCH tableCH=(TableCH)c1.getAnnotation(TableCH.class);//获得指定注解
    String value=tableCH.value();
    System.out.println(value);
    
    //获得指定类注解
    Field f=c1.getDeclaredField("name");//获得name参数的注解,结果是这个就正确: @FieldCH(columnName="db_name",type="varchar",length=3),db_name,varchar,3
    FieldCH annotation=f.getAnnotation(FieldCH.class);
    //打印注解的全部字段
    System.out.println(annotation.columnName());
    System.out.println(annotation.type());
    System.out.println(annotation.length());
    
    }
}

//模拟数据库表
@TableCH("db_Student1")
class Student1{
    @FieldCH(columnName="db_id",type="int",length=10)//假设数据库存在一个db_id的表,那就让当前的id属性获取一个int类型的值,长度,不超过10
    private int id;
      @FieldCH(columnName="db_age",type="int",length=10)
    private int age;
      @FieldCH(columnName="db_name",type="varchar",length=3)
    private String name;
    public Student1(){
        
    }
    public Student1(int id,int age ,String name){
        this.id=id;
        this.age=age;
        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;
    }
    public String getName(){
        return name;
    }
    public void setName(){
        this.name=name;
    }
    
    public String toString(){
    return "User{"+ "id="+id+",age="+age+",name="+name+"}";
        
    }
}
//类名的注解
@Target(ElementType.TYPE)//获取级别
@Retention(RetentionPolicy.RUNTIME)
@interface TableCH{
    String value();
}
//属性的注解
@Target(ElementType.FIELD)//获取级别
@Retention(RetentionPolicy.RUNTIME)//作用域
@interface FieldCH{
    String columnName();
    String type();
    int length();
}
复制代码

 

posted @   hollg  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示