反射的作用:绕过编译阶阶段
package reflect_framework; /** * FileName: ReflectDemo * Author: lps * Date: 2022/4/22 10:32 * Sign:刘品水 Q:1944900433 */ public class ReflectDemo { public static void main(String[] args) { Student s = new Student(); s.setName("刘品水"); s.setClassName("物联网1913"); s.setAge(21); s.setSex('男'); s.setHobby("敲键盘"); MybatisUtil.save(s); Teacher t = new Teacher(); t.setName("仲老师"); t.setSex('男'); t.setSalary(28888.88); MybatisUtil.save(t); } }
package reflect_framework; import java.io.FileOutputStream; import java.io.PrintStream; import java.lang.reflect.Field; /** * FileName: MybatisUtil * Author: lps * Date: 2022/4/22 10:46 * Sign:刘品水 Q:1944900433 */ public class MybatisUtil { public static void save(Object obj) { //1.提取这个对象的全部成员变量 try (PrintStream ps = new PrintStream(new FileOutputStream("F:\\JavaProject\\Code\\src\\data.txt",true));){ Class<?> c = obj.getClass(); //String getSimpleName() 返回源代码中给出的基础类的简单名称。 ps.println("========"+c.getSimpleName()+"========"); //提取全部成员变量 Field[] fields = c.getDeclaredFields(); //获取成员变量的信息 for (Field field : fields) { String name = field.getName(); //提取本成员变量在obj对象的值 field.setAccessible(true); String value= field.get(obj)+""; ps.println(name+"="+value); } } catch (Exception e) { e.printStackTrace(); } } }
package reflect_framework; /** * FileName: Student * Author: lps * Date: 2022/4/22 10:31 * Sign:刘品水 Q:1944900433 */ public class Student { private String name; private char sex; private int age; private String className; private String hobby; public Student() { } public Student(String name, char sex, int age, String className, String hobby) { this.name = name; this.sex = sex; this.age = age; this.className = className; this.hobby = hobby; } public String getName() { return name; } public void setName(String name) { this.name = name; } public char getSex() { return sex; } public void setSex(char sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getClassName() { return className; } public void setClassName(String className) { this.className = className; } public String getHobby() { return hobby; } public void setHobby(String hobby) { this.hobby = hobby; } }
package reflect_framework; /** * FileName: Teacher * Author: lps * Date: 2022/4/22 10:31 * Sign:刘品水 Q:1944900433 */ public class Teacher { private String name; private char sex; private double salary; public String getName() { return name; } public void setName(String name) { this.name = name; } public char getSex() { return sex; } public void setSex(char sex) { this.sex = sex; } public double getSalary() { return salary; } public void setSalary(double salary) { this.salary = salary; } public Teacher() { } public Teacher(String name, char sex, double salary) { this.name = name; this.sex = sex; this.salary = salary; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix