使用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方法 * 需要注意的是:实例化类中存在 ...
随机推荐
- webkit 模拟点击 winform
刚在园子里看到有博主将WebBowser控件替换为Chrome内核(),链接http://www.cnblogs.com/gdyblog/p/WebKitBrowser.html 于是我想既然实现了替 ...
- ShareSDK分享失败的原因
关于分享估计很多都用的是ShareSDK的社会化分享,简单方便,支持的种类很多,但是一般的话都还是QQ,微信,新浪微博,腾讯微博为主. 最近需要导入一个分享的模块,失败了几次之后最终成功,分享给大家, ...
- Laravel5路由/home页面无法访问
报错信息: Not Found The requested URL /laravel5/public/home was not found on this server. 解决方法: 1.编辑apac ...
- [译]:Xamarin.Android平台功能——位置服务
返回索引目录 原文链接:Location Services. 译文链接:Xamarin.Android平台功能--位置服务 本部分介绍位置服务以及与如何使用位置提供商服务 Location Servi ...
- [转]js实现各种进制的转换
关键点: parseInt(string, radix).toString(target_radix); 参考:http://www.cnblogs.com/guowei1027/archive/20 ...
- 移动端 css/html (box-flex)自适应、等比布局
移动端 css/html (box-flex)自适应.等比布局 对于移动端自适应的一种布局方式. <!DOCTYPE html> <html> <head> < ...
- Java集合框架练习-计算表达式的值
最近在看<算法>这本书,正好看到一个计算表达式的问题,于是就打算写一下,也正好熟悉一下Java集合框架的使用,大致测试了一下,没啥问题. import java.util.*; /* * ...
- java对象转换成json
package com.bjs.acrosstime.utils; import java.util.ArrayList; import java.util.Date; import java.uti ...
- 【vuejs小项目——vuejs2.0版本】单页面搭建
http://router.vuejs.org/zh-cn/essentials/nested-routes.html 使用嵌套路由开发,这里会出错主要把Vue.use(VueRouter);要进行引 ...
- checkbox和文本上下对齐
只需要分别给checkbox和文本加上这个样式就可以了: vertical-align:middle;