反射:作用、应用场景
package Karl.Demo.FanShe; import org.junit.Test; public class Test1 { @Test public void save() throws Exception { Student si=new Student("黑马吴彦祖",45,'男',185.3,"篮球,冰球,阅读"); Teacher t1=new Teacher("波妞",999.9); ObjectFrame.saveObject(si); ObjectFrame.saveObject(t1); } }
package Karl.Demo.FanShe; public class Teacher { private String name; private double salary; public Teacher() { } public Teacher(String name, double salary) { this.name = name; this.salary = salary; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getSalary() { return salary; } public void setSalary(double salary) { this.salary = salary; } @Override public String toString() { return "Teacher{" + "name='" + name + '\'' + ", salary=" + salary + '}'; } }
package Karl.Demo.FanShe; public class Student { private String name; private int age; private char sex; private double height; private String hobby; public Student() { } public Student(String name, int age, char sex, double height, String hobby) { this.name = name; this.age = age; this.sex = sex; this.height = height; this.hobby = hobby; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public char getSex() { return sex; } public void setSex(char sex) { this.sex = sex; } public double getHeight() { return height; } public void setHeight(double height) { this.height = height; } public String getHobby() { return hobby; } public void setHobby(String hobby) { this.hobby = hobby; } @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", age=" + age + ", sex=" + sex + ", height=" + height + ", hobby='" + hobby + '\'' + '}'; } }
package Karl.Demo.FanShe; import java.io.FileOutputStream; import java.io.PrintStream; import java.lang.reflect.Field; public class ObjectFrame { public static void saveObject(Object obj) throws Exception { //有打印流包装低级输出流访问到文件,加true追加输出 PrintStream ps=new PrintStream(new FileOutputStream("F:\\Develop\\code\\Demo1\\src\\data.txt",true)); //obj是任意对象,因为不知道有什么字段要保存 Class c=obj.getClass(); //使用反射方法获取参数数据打印 String cName=c.getSimpleName(); ps.println("----------------"+cName+"--------------"); //使用反射方法获取全部成员变量 Field[] fields=c.getDeclaredFields(); //遍历全部成员变量 for (Field field : fields) { //获取成员变量名字 String name=field.getName(); //禁止检查访问 field.setAccessible(true); //拿到成员变量在对象中的数据,因为是Object所以加“”变成String String value=field.get(obj)+""; //打印获取到的数据 ps.println(name+"="+value); } ps.close(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现