# xueqi4-2404-parent **Repository Path**: coder_chenjun/xueqi4-2404-parent ## Basic Information - **Project Name**: xueqi4-2404-parent - **Description**: 2404-java - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-20 - **Last Updated**: 2026-03-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 反射 如果项目写好了,打包了,想实例化一个对象 ```java Student s = new Student(); ``` 或者两个文本框让用户输入,一个输入类名,一个输入方法点,点击一个按钮让类的方法得到执行 现有的java知识做不到上面的需求,只有反射可以 反射:运行的时候剖析类的情况,并操作类的成员 常识: 类的信息有以下几类 - 类本身的信息 - 类名 - 类所在的包 - 类的修饰符(public) - 类的父类 - 类的所有实现的接口 - 成员 - 字段 - 构造函数 - 方法 成员分为两位 - 静态的 - 实例 成员的来源 - 自己写 - 从父继承的 英文基础常识 - Class:类 - Field:字段 - Method:方法 - Constructor:构造函数 - Declared:声明,在反射的语境里 自己写的东西,比如方法 - instance:实例(new出来的对象 反射代码的写法一般 - 获取Class对象 - 获取成员 - 操作成员 ```java Class clz=....; Method m = clz.getDeclaredMethod(); m.invoe ``` ## 反射练习 - 设计一个方法,自动生成sql并把对象作为记录插入到数据库 ```java public void insert(Userinfo ui){ } ``` - 实现bean拷贝功能,方法签名设计如下,规则:同名属性之间拷贝 ```java public Object copyBean(Object source,Class target){ } Userinfo ui = new Userinfo(); ui.setId(100); ui.setUsername("abc"); User user = copyBean(ui,User.class) ``` - 实现从数据库中查询数据,并自动封装到实体类中 ```java public static Object getData(Connection connection,String sql, Class clz, Object... params){} User user = getData(conn,"select id,username from user where id=?",User.class,100) ```