反射写一个工厂类
来源:互联网 发布:部落冲突9本王级别数据 编辑:程序博客网 时间:2024/05/18 03:10
package javaee_review;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
/*
需求:编写一个工厂方法根据配置文件的内容,返回对应的对象,并且把对象要有对应的属性值
*/
public class test05 {
public static void main(String[] args) throws Exception {
String s = newInstance().toString();
System.out.println(s);
}
//根据配置文件的内容生产对象的对象并且把对象的属性值封装到对象中。
public static Object newInstance() throws Exception {
BufferedReader b = new BufferedReader(new FileReader("obj.txt"));//路径从当前项目
String className = b.readLine();//读取配置文件获取到完整的类名
Class clazz = Class.forName(className);
//通过class对象获取到无参的构造方法
Constructor c = clazz.getConstructor(null);
//创建对象
String line = null;
while ((line = b.readLine())!=null) {
String[] datas = line.split("=");
//通过属性名获取到对应的Field对象
Field field = clazz.getDeclaredField(datas[0]);
if (field.getType() == int.class) {
field.set(o, Integer.parseInt(datas[1]));
} else {
field.set(o,datas[1]);
}
}
return o;
}
}
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
/*
需求:编写一个工厂方法根据配置文件的内容,返回对应的对象,并且把对象要有对应的属性值
*/
public class test05 {
public static void main(String[] args) throws Exception {
String s = newInstance().toString();
System.out.println(s);
}
//根据配置文件的内容生产对象的对象并且把对象的属性值封装到对象中。
public static Object newInstance() throws Exception {
BufferedReader b = new BufferedReader(new FileReader("obj.txt"));//路径从当前项目
String className = b.readLine();//读取配置文件获取到完整的类名
Class clazz = Class.forName(className);
//通过class对象获取到无参的构造方法
Constructor c = clazz.getConstructor(null);
//创建对象
Object o = c.newInstance(null);//还可以使用clazz.newInstance();方法默认使用的是午餐构造方法,如果没有就会报错
//读取属性值String line = null;
while ((line = b.readLine())!=null) {
String[] datas = line.split("=");
//通过属性名获取到对应的Field对象
Field field = clazz.getDeclaredField(datas[0]);
if (field.getType() == int.class) {
field.set(o, Integer.parseInt(datas[1]));
} else {
field.set(o,datas[1]);
}
}
return o;
}
}
0 0
- 反射写一个工厂类
- 使用反射写一个简单的JDBC工具类
- 如何使用反射和抽象工厂模式来写JDBC
- 反射工厂
- 反射工厂
- 工厂反射、缓存相关的操作类
- 利用java 反射原理写了一个赋值和取值通用类
- 利用Android反射与泛型机制写一个通用的Adapter类
- 利用java反射机制写的一个实体类属性拷贝的工具
- 利用json和反射写了一个对类的读取和写入
- 抽象工厂+反射=反射工厂
- 使用简单工厂模式写的一个计算器
- 自己动手写spring(二) 创建一个bean工厂
- 应用抽象工厂模式自己动手写一个ioc
- 反射(二)反射工厂
- C#写Facotry解析.Net的反射和Attribute (数据库工厂的架构)
- 利用反射写一个简单的错误日志插件
- Java反射结合JDBC写的一个通用DAO
- 《spring-boot学习》-11-定时任务
- Android搜索列表关键词高亮显示
- 关于鱼眼镜头展图开的一些研究
- iptables实例
- Floodlight 入门 之 起步篇
- 反射写一个工厂类
- oracle constraint 约束 状态 详解
- 如何是div充满整个页面
- Spring拦截器
- Oracle 增加修改删除字段
- Linux环境zookeeper安装
- 安卓开发问题集锦一
- cocoapods的安装和使用
- Json Self referencing loop detected