使用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方法 * 需要注意的是:实例化类中存在 ...
随机推荐
- Lintcode 75.寻找峰值
--------------------------------------- 按照给定的峰值定义,峰值的左半部分一定是递增的,所以只要找到不递增的即可. AC代码: class Solution { ...
- debug : 应用程序无法正常启动(0xc000007b)
- NetBeans无法使用编码GBK安全打开文件
刚才使用NetBeans打开php文件时,提示:NetBeans无法使用编码GBK安全地打开该路径下的文件. 找到了解决方案. 原文地址:http://qdjinxin.iteye.com/blog/ ...
- POCO库——Foundation组件之核心Core
核心Core: Version.h:版本控制信息,宏POCO_VERSION,值格式采用0xAABBCCDD,分别代表主版本.次版本.补丁版本.预发布版本: Poco.h:简单地包含了头文件Found ...
- JsonHelper MergeJsonTemplate
namespace Test { using Newtonsoft.Json; using System; using System.Collections.Generic; using System ...
- git 的基本使用
git 的使用步骤: 1. 新建一个文件夹,然后进入终端, 2. cd <文件夹路径> ——->进入当前目录: 2.psw ————>查看当前路径 3.git init ...
- 【转】Asp.net关闭弹出窗口刷新父窗口
通常情况下,关闭窗口时不需要对父窗口做任何操作,但如果子窗口是某一对象的修改画面,这时,当关闭子窗体时就需要对父窗口刷新,刷新可以通过三种方式来实现:1,采用window.opener.locatio ...
- react native AsyncStorage的使用
如果现在有一个需求,是要把用户的账号密码保存到本地,大家会怎么做的呢?如果在android中,我相信一大部分人会想到SharedPreferences,这是一个以键值对的形式进行存储的.那如果在rea ...
- PowerDesigner修改生成mysql视图
今天遇到了个问题,就是有PowerDesigner的设计图,能生成oracle的视图,不能生成mysql,在网上找到了解决方案, 非常感谢各位网友的分享,这个不是抄袭,主要是为了让更多的人知道这种解决 ...
- python遍历一个网段的ip地址
def ip2num(ip):#ip to int num lp = [int(x) for x in ip.split('.')] return lp[0] << 24 | lp[1] ...