


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();
}
}