使用java反射机制编写Student类并保存
定义Student类
package org; public class Student {
private String _name = null;
private int _age = -;
private int _score = -; public Student()
{ } public Student(String name, int age, int score)
{
_name = name;
_age = age;
_score = score;
} public void setName(String name)
{
_name = name;
} public String getName()
{
return _name;
} public void setAge(int age)
{
_age = age;
} public int getAge()
{
return _age;
} public void setScore(int score)
{
_score = score;
} public int getScore()
{
return _score;
} public void set(Student stu)
{
setName(stu._name);
setAge(stu._age);
setScore(stu._score);
} public String toString()
{
return "Name: " + _name + ", age: " + _age + ", score: " + _score;
}
}
保存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
package org;
import java.lang.reflect.Method; public class InvokeProxy {
public static String init_metName(String met_name)
{
return met_name.substring(, ).toUpperCase() + met_name.substring();
} public static void setter(Object obj, String met_name, Object value, Class<?> type)
{
try {
Method met = obj.getClass().getMethod("set" + init_metName(met_name), type);
met.invoke(obj, value);
} catch (Exception e) {
e.printStackTrace();
}
} /*
public static Object getter(Object obj, String met_name)
{
Object result = null; try {
Method met = obj.getClass().getMethod("get" + init_metName(met_name));
result = met.invoke(obj);
} catch (Exception e) {
e.printStackTrace();
} return result;
}
*/
}
package org;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method; public class tmp {
public static void main(String[] args)
{
Class<?> c0 = null;
Class<?> c1 = null;
String obj_name = "org.Student";
String save_name = "org.SaveStudents";
String file_name = "F:\\Code\\java\\text\\test15.txt"; try {
c0 = Class.forName(obj_name);
c1 = Class.forName(save_name);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} String name = null;
int age = -1;
int score = -1; // Inputs
{
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
OutputStream os = System.out; try {
os.write("Input name: ".getBytes());
name = buf.readLine(); os.write("Input age: ".getBytes());
age = Integer.parseInt(buf.readLine()); os.write("Input score: ".getBytes());
score = Integer.parseInt(buf.readLine());
} catch (Exception e) {
e.printStackTrace();
}
} // instance Student
Student stu = null;
try {
stu = (Student)c0.newInstance();
} catch (Exception e) {
e.printStackTrace();
} // set
{
InvokeProxy.setter(stu, "name", name, String.class);
InvokeProxy.setter(stu, "age", age, int.class);
InvokeProxy.setter(stu, "score", score, int.class);
} // instance SaveStudents and invoke save() method
SaveStudents ss = null;
Constructor<?> con1 = null;
try {
con1 = c1.getConstructor(String.class);
ss = (SaveStudents)con1.newInstance(file_name);
Method met = ss.getClass().getMethod("save", Student.class);
met.invoke(ss, stu); } catch (Exception e) {
e.printStackTrace();
}
}
}
使用java反射机制编写Student类并保存的更多相关文章
- 利用Java反射机制对实体类的常用操作工具类ObjectUtil
代码: ObjectUtil类: import java.lang.reflect.Field; import java.math.BigDecimal; import java.text.Simpl ...
- 浅谈Java反射机制 之 使用类的 属性、方法和构造函数
前面两篇我们总结了Java反射机制如何获取类的字节码,如何获取构造函数,属性和方法, 这篇我们将进一步验证如何使用我们获取到的属性.方法以及构造函数 1.使用 反射 获取到的 属性 import ja ...
- 浅谈Java反射机制 之 获取类的字节码文件 Class.forName("全路径名") 、getClass()、class
另一个篇:获取 类 的 方法 和 属性(包括构造函数) 先贴上Java反射机制的概念: AVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法: 对于任意一个对象,都能够调用它 ...
- 利用java反射机制编写solr通用的java客户端
一.前言 通过上一篇的讲解,我们知道了dynamicFiled字段,它是动态的,不需要显示的声明.而且一些常用的基本类型solr已经默认给我们创建好了. 例如:*_i,*_is,等. 如果我们要使用动 ...
- JAVA反射机制教程-获取类对象
1. 什么是类对象 类对象,就是用于描述这种类,都有什么属性,什么方法的 2. 获取类对象 获取类对象有3种方式(1). Class.forName(2). Hero.class(3). new He ...
- 浅谈Java反射机制 之 获取类的 方法 和 属性(包括构造函数)
上一篇 获取 类 的字节码文件 我们讲到了获取类的字节码文件的三种方法 第三种方法通过getClass("全路径名")获取字节码文件最符合要求 1.获取构造方法 先贴上我们要获取的 ...
- Java反射机制(取得类的结构)
通过反射得到一个类中的完整的结构,就要使用java.lang.reflect包中的以下几个类: Constructor:表示类中的构造方法 Field:表示类中的属性 Method:表示类中的方法 ...
- Java反射机制 之 获取类的 方法 和 属性(包括构造函数)(Day_06)
把自己立成帆,才能招来凤. 运行环境 JDK8 + IntelliJ IDEA 2018.3 本文中使用的jar包链接 https://files.cnblogs.com/files/papercy ...
- Java反射机制(Class类的使用)
1:通过无参构造实例化对象 package cn.itcast; /* * 通过无参构造实例化对象 * 通过Class类本身实例化对象,使用newInstance方法 * 需要注意的是:实例化类中存在 ...
随机推荐
- hbase 遇到过的问题
1:下面这个错误是因为我zookeeper忘了启动了,启动你的zookeeper,重新启动下你的hbase hbase(main):002:0> list TABLE ERROR: Can't ...
- 10个 jQuery 代码片段,可以帮你快速开发。
转载自:http://mp.weixin.qq.com/s/mMstI10vqwu8PvUwlLborw 1.返回顶部按钮 你可以利用 animate 和 scrollTop 来实现返回顶部的动画,而 ...
- memcache入门笔记
向memcached保存数据时可以指定期限(秒).不指定期限时,memcached按照LRU算法保存数据. 这三个方法的区别如下: 选项 说明 add 仅当存储空间中不存在键相同的数据时才保存 rep ...
- 导出(Excel格式)
poi导出,需要的poi jar包: 步骤一.两个工具类: 1.ExcelUtil.java package util; import java.awt.Color; import java.io.F ...
- 【DWR系列02】-DWR逆向Ajax即服务器推送
.literal { background-color: #f2f2f2; border: 1px solid #cccccc; padding: 1px 3px 0; white-space: no ...
- Oracle获取干净的建表DDL语句,不含其它存储、表空间、段属性
早上一个同事资讯怎么获取到建表语句而且是不带存储那种SQL.Oracle自己提供了一个函数DBMS_METADATA.GET_DDL,但是获取到的建表语句含有存储.表空间.以及一些其他段的属性.如图: ...
- UWP学习记录5-设计和UI之控件和模式2
UWP学习记录5-设计和UI之控件和模式2 1.应用栏和命令栏 CommandBar 控件是一款通用.灵活.轻型的控件,可显示复杂内容(如图像或文本块)以及简单的命令(如 AppBarButton.A ...
- 单调队列 && 斜率优化dp 专题
首先得讲一下单调队列,顾名思义,单调队列就是队列中的每个元素具有单调性,如果是单调递增队列,那么每个元素都是单调递增的,反正,亦然. 那么如何对单调队列进行操作呢? 是这样的:对于单调队列而言,队首和 ...
- python爬虫实战
http://www.jb51.net/article/57161.htm python在线编程:http://www.pythontip.com/coding/run c语言在线编程:http:// ...
- 修改Linux系统日期与时间date clock
先设置日期 date -s 20080103 再设置时间 date -s 18:24:30 为了永久生效,需要将修改的时间写入CMOS. 查看CMOS的时间: #clock -r 将当前系统时间写到C ...