java如何在文件中读取一个字符串并创建以这个字符为名字的类的对象

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">我们一般用properties或者XML文件作为资源存储的文件,现在主要介绍一下对properties的操作</span>

1.我们在src文件下新建一个名称为config的包

2.在config下新建一个file,把它命名为demo.properties

3. 把下面的几段文字复制到demo.properties中

#comments
username=oseye

4.新建一个叫RunMain.java的class ,在里面添加textProperties方法如下:

public  static void textProperties(){
		Properties prop=new Properties();
		try {
			prop.load(RunMain.class.getResourceAsStream("/config/demo.properties"));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		String username = prop.getProperty("username");//此方法实现了在demo.properties读出属性为username的值
		System.out.println("username的值:"+username);
	}

5.新建一个自己的类,这个类名就随便取了,我建了一个叫People的类,另外需要至少两个类实现通过更改demo.propertie来创建不同的对象,所以我写了People1和People2来继承People:

People

package config;

public abstract class People {
	private String sname;
	private String sex;
	public People() {
		super();
		// TODO Auto-generated constructor stub
	}
	public People(String sname, String sex) {
		super();
		this.sname = sname;
		this.sex = sex;
	}
	//get&set方法
	@Override
	public String toString() {
		return "People [sname=" + sname + ", sex=" + sex + "]";
	}
	public abstract void setAge(String age);
	public abstract void setHigh(String high);

}

People1:

package config;

public class People1 extends People {
	private String age ;

	public People1() {
		super();
		// TODO Auto-generated constructor stub
	}

	public People1(String sname, String sex,String age) {
		super(sname, sex);
		this.age = age;
		// TODO Auto-generated constructor stub
	}
	//getset方法
	@Override
	public String toString() {
		return "People1 [name=" + super.getSname()+ ",sex="+super.getSex()+",age=" + age + "]";
	}
}

People2:

package config;

public class People2 extends People {
	private String high ;
	public People2() {
		super();
		// TODO Auto-generated constructor stub
	}
	public People2(String sname, String sex,String high) {
		super(sname, sex);
		this.high = high;
		// TODO Auto-generated constructor stub
	}
	@Override
	public String toString() {
		return "People2 [name=" + super.getSname()+ ",sex="+super.getSex()+",high=" + high + "]";
	}
	@Override
	public void setAge(String age) {
		// TODO Auto-generated method stub
	}
	@Override
	public void setHigh(String high) {
		// TODO Auto-generated method stub
		this.high=high;
	}
}

6.在RunMain中创建一个名称为textAll的方法:

public static void textAll(){
		Properties prop=new Properties();
		People p = null;
		try {
			prop.load(RunMain.class.getResourceAsStream("/config/demo.properties"));

			Class people = Class.forName("config."+prop.getProperty("People"));
			p = (People)people.newInstance();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		p.setSex("nv");
		p.setSname("xww");
		if(p instanceof People1){
			p.setAge("20");

		}else if(p instanceof People2){
			p.setHigh("180");
		}
		System.out.println(p);
	}

7.修改demo.properties的值,添加上我们要创建的类

People=People2

8.在主方法中运行一下textAll()这个方法,再改成People1再运行一下,两者分别输出各自类的信息

9.至此我们就实现了在文件中读取一个字符串并创建以这个字符为名字的类的对象

时间: 2024-10-08 16:36:03

java如何在文件中读取一个字符串并创建以这个字符为名字的类的对象的相关文章

(转)java 从jar包中读取资源文件

(转)java 从jar包中读取资源文件 博客分类: java 源自:http://blog.csdn.net/b_h_l/article/details/7767829 在代码中读取一些资源文件(比如图片,音乐,文本等等),在集成环境(Eclipse)中运行的时候没有问题.但当打包成一个可执行的jar包(将资源文件一并打包)以后,这些资源文件找不到,如下代码:Java代码 [java] view plaincopy //源代码1: package edu.hxraid; import java

从文件中读取字符-多次调用read characters from file multiple calls

[抄题]: 接口:int read4(char * buf)一次从文件中读取 4 个字符.返回值是实际读取的字符数. 例如,如果文件中只剩下 3 个字符,则返回 3.通过使用read4 接口,实现从文件读取 n 个字符的函数int read(char * buf,int n). [暴力解法]: 时间分析: 空间分析: [思维问题]: [一句话思路]: [输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入): [画图]: 用数组实现队列的原理是:进入时是ta

Java数据存入文件和读取文件

在Java程序开发过程中我们发现并不能够让程序多次运行时获得上一次关闭程序前的运行结果--我们没有将运行的结果加以保存.这个时候我们就要找到Java操作读取数据的方法(以操作文件为例):Java中的输入/输出模型,I/O模型又称为I/O流.(以下简称I/O流). 流按方向可以分为输入(input)和输出(output)2种.输入和输出是相对的,这里我们是站在程序的角度来看的,将程序的数据写到文件就是输出,从文件中读取数据就是输入. 按类型(大小)可以分为字节型(byte)和字符型(byte)2种

从属性文件中读取配置

本章是关于如何在Selenium Cucumber Framework 或任何框架中从属性文件中读取配置的.在项目中存储硬编码值是危险的,也违反了编码原则.到目前为止,我们在代码中使用了大量的硬编码值.在属性文件的帮助下,我们将逐一消除这些硬编码值. 什么是Java中的Property文件 .properties  文件主要用于Java程序,以维护项目配置数据,数据库配置或项目设置等.属性文件中的每个参数都以键值对格式存储为一对字符串,其中每个键都在一行上.您可以使用 Properties类型的

JMeter接口测试——参数化(从文件中读取参数)

从文件中读取,三个步骤 1.读取文件 2.取文件内容里面的参数,给它一个名字 3.使用值 从文件读取的话,需要在线程组里面添加一个CSV Data Set Config,它就是做前面两步的操作的 参数说明: Filename: 文件的完整路径 Variable Names(comma-delimited):储存参数的变量名 Delimiter(use '\t' for tab): 分隔多个参数的分隔符 Recycle on EOF ?:文件读取完后是否继续读取 Stop thread on EO

从Matlab .fig文件中读取数据,并重新绘图

Matlab提供了强大的函数集合,可以从.fig文件中读取图中的数据,并重新绘制图形.如果原始数据丢失,我们可以从.fig文件中恢复原始数据,并基于原始数据做进一步的处理. 以下是一个从两个不同文件中读取原始数据,并重新绘制图形的例子. h1 = openfig('1.fig','reuse'); % open figure D1=get(gca,'Children'); %get the handle of the line object XData1=get(D1,'XData'); %ge

在文件中读取、存储Json格式的字符串

public class Weather { static readonly string FilePath = System.Environment.CurrentDirectory + @"\Area.txt"; public static Models.Area GetCurrentArea() { var file = new FileInfo(FilePath); Models.Area result; if (!file.Exists) { //文件不存在就返回一个默认值,

VB.NET 从XML文件中读取内容到JSON

一.关于本文 本文承接了上一篇博客的内容.在上篇博客中,通过函数WriteJsonToXml将一个JSON格式的文件写入了一个对应的XML文件中.本文中则给出了函数RecoverJsonFromXml的代码,可以将XML恢复成JSON格式的文本. 运行本文中代码的环境与上篇博客相同. 待读取的XML文档内容如下: <?xml version="1.0" encoding="gb2312"?> <!--这个XML文档中存储了一个JSON格式的信息--

【Python】从文件中读取数据

从文件中读取数据 1.1 读取整个文件 要读取文件,需要一个包含几行文本的文件(文件PI_DESC.txt与file_reader.py在同一目录下) PI_DESC.txt 3.1415926535 8979323846 2643383279 5028841971 file_reader.py with open("PI_DESC.txt") as file_object: contents = file_object.read() print(contents) 我们可以看出,读取