使用java反射机制编写Student类并保存

定义Student类

 1 package org;
 2
 3 public class Student {
 4     private String _name = null;
 5     private int _age = -1;
 6     private int _score = -1;
 7
 8     public Student()
 9     {
10
11     }
12
13     public Student(String name, int age, int score)
14     {
15         _name = name;
16         _age = age;
17         _score = score;
18     }
19
20     public void setName(String name)
21     {
22         _name = name;
23     }
24
25     public String getName()
26     {
27         return _name;
28     }
29
30     public void setAge(int age)
31     {
32         _age = age;
33     }
34
35     public int getAge()
36     {
37         return _age;
38     }
39
40     public void setScore(int score)
41     {
42         _score = score;
43     }
44
45     public int getScore()
46     {
47         return _score;
48     }
49
50     public void set(Student stu)
51     {
52         setName(stu._name);
53         setAge(stu._age);
54         setScore(stu._score);
55     }
56
57     public String toString()
58     {
59         return "Name: " + _name + ", age: " + _age + ", score: " + _score;
60     }
61 }

保存Student类的信息  SaveStudents类

package org;
import java.io.FileOutputStream;
import java.io.OutputStream;

public class SaveStudents {
    private String _file_name = null;

    public SaveStudents(String file_name)
    {
        _file_name = file_name;
    }

    public boolean save(Student stu) throws Exception
    {
        OutputStream os = new FileOutputStream(_file_name, true);
        boolean flag = false;        //    是否保存成功的标志

        if (null != stu.getName()) {
            os.write(stu.toString().getBytes());
            os.close();
            flag = true;
        }

        return flag;
    }
}

代理调用类InvokeProxy

 1 package org;
 2 import java.lang.reflect.Method;
 3
 4 public class InvokeProxy {
 5     public static String init_metName(String met_name)
 6     {
 7         return met_name.substring(0, 1).toUpperCase() + met_name.substring(1);
 8     }
 9
10     public static void setter(Object obj, String met_name, Object value, Class<?> type)
11     {
12         try {
13             Method met = obj.getClass().getMethod("set" + init_metName(met_name), type);
14             met.invoke(obj, value);
15         } catch (Exception e) {
16             e.printStackTrace();
17         }
18     }
19
20     /*
21     public static Object getter(Object obj, String met_name)
22     {
23         Object result = null;
24
25         try {
26             Method met = obj.getClass().getMethod("get" + init_metName(met_name));
27             result = met.invoke(obj);
28         } catch (Exception e) {
29             e.printStackTrace();
30         }
31
32         return result;
33     }
34     */
35 }
 1 package org;
 2 import java.io.BufferedReader;
 3 import java.io.InputStreamReader;
 4 import java.io.OutputStream;
 5 import java.lang.reflect.Constructor;
 6 import java.lang.reflect.Method;
 7
 8 public class tmp {
 9     public static void main(String[] args)
10     {
11         Class<?> c0 = null;
12         Class<?> c1 = null;
13         String obj_name = "org.Student";
14         String save_name = "org.SaveStudents";
15         String file_name = "F:\\Code\\java\\text\\test15.txt";
16
17         try {
18             c0 = Class.forName(obj_name);
19             c1 = Class.forName(save_name);
20         } catch (ClassNotFoundException e) {
21             e.printStackTrace();
22         }
23
24         String name = null;
25         int age = -1;
26         int score = -1;
27
28         //    Inputs
29         {
30             BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
31             OutputStream os = System.out;
32
33             try {
34                 os.write("Input name: ".getBytes());
35                 name = buf.readLine();
36
37                 os.write("Input age: ".getBytes());
38                 age = Integer.parseInt(buf.readLine());
39
40                 os.write("Input score: ".getBytes());
41                 score = Integer.parseInt(buf.readLine());
42             } catch (Exception e) {
43                 e.printStackTrace();
44             }
45         }
46
47         //    instance Student
48         Student stu = null;
49         try {
50             stu = (Student)c0.newInstance();
51         } catch (Exception e) {
52             e.printStackTrace();
53         }
54
55         //    set
56         {
57             InvokeProxy.setter(stu, "name", name, String.class);
58             InvokeProxy.setter(stu, "age", age, int.class);
59             InvokeProxy.setter(stu, "score", score, int.class);
60         }
61
62         //    instance SaveStudents and invoke save() method
63         SaveStudents ss = null;
64         Constructor<?> con1 = null;
65         try {
66             con1 = c1.getConstructor(String.class);
67             ss = (SaveStudents)con1.newInstance(file_name);
68             Method met = ss.getClass().getMethod("save", Student.class);
69             met.invoke(ss, stu);
70
71         } catch (Exception e) {
72             e.printStackTrace();
73         }
74     }
75 }
时间: 2024-12-25 05:29:42

使用java反射机制编写Student类并保存的相关文章

java反射机制取出model类的所有变量,以及value

原文:java反射机制取出model类的所有变量,以及value 源代码下载地址:http://www.zuidaima.com/share/1550463649270784.htm 工作上遇到个问题,顺便解决了,希望对大家有帮助 package com.zuidaima.util; public static void main(String[] args) throws ClassNotFoundException, IllegalArgumentException, IllegalAcce

Java反射机制(取得类的结构)

通过反射得到一个类中的完整的结构,就要使用java.lang.reflect包中的以下几个类: Constructor:表示类中的构造方法 Field:表示类中的属性 Method:表示类中的方法 Class类中的常用方法: 确定此对象所表示的类或接口实现的接口. public Class<?>[] getInterfaces() 取得父类 public Class<? super T> getSuperclass() 取得全部的构造方法 public Constructor<

Java反射机制(Class类的使用)

1:通过无参构造实例化对象 package cn.itcast; /* * 通过无参构造实例化对象 * 通过Class类本身实例化对象,使用newInstance方法 * 需要注意的是:实例化类中存在一个无参构造的方法,如果不存在将无法实例化Person对象: * 如果没有则报异常:InstantionException * */ public class ClassDemo03 { public static void main(String[] args) { //创建Class对象 Cla

Java反射机制demo(四)—获取一个类的父类和实现的接口

Java反射机制demo(四)—获取一个类的父类和实现的接口 1,Java反射机制得到一个类的父类 使用Class类中的getSuperClass()方法能够得到一个类的父类 如果此 Class 表示 Object 类.一个接口.一个基本类型或 void,则返回 null.如果此对象表示一个数组类,则返回表示该 Object 类的 Class 对象. 测试代码: package com.aaron.reflect; public class Demo4 { public static void

java反射机制分析

本文转自:http://www.cnblogs.com/gulvzhe/archive/2012/01/27/2330001.html 浅显易懂,值得收藏 Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象, 都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制.反射的概念是由Smith在1982年 首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力.这一概念的提出很快引发了

【转载】Java反射机制详解

转自:http://baike.xsoftlab.net/view/209.html#3_8 1反射机制是什么 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. 2反射机制能做什么 反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类: 在运行时构造任意一个类的对象: 在运行时判断任意一个类所具有的成员变量和方法: 在运行时调用任意一个

java 反射机制的概念

java 反射 定义 功能 示例 概要: Java反射机制详解 | |目录 1反射机制是什么 2反射机制能做什么 3反射机制的相关API ·通过一个对象获得完整的包名和类名 ·实例化Class类对象 ·获取一个对象的父类与实现的接口 ·获取某个类中的全部构造函数 - 详见下例 ·通过反射机制实例化一个类的对象 ·获取某个类的全部属性 ·获取某个类的全部方法 ·通过反射机制调用某个类的方法 ·通过反射机制操作某个类的属性 ·反射机制的动态代理 4反射机制的应用实例 ·在泛型为Integer的Arr

Java 反射机制浅析

转:http://www.cnblogs.com/gulvzhe/archive/2012/01/27/2330001.html ———————————————————————————————————————————————— Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制.反射的概念是由Smith在1982年首次提出的,主要是指程序可以

java反射机制详解和应用

1反射机制是什么 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. 2反射机制能做什么 反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类: 在运行时构造任意一个类的对象: 在运行时判断任意一个类所具有的成员变量和方法: 在运行时调用任意一个对象的方法: 生成动态代理. 3反射机制的相关API 通过一个对象获得完整的包名和类名 pub