如何通过配置文件动态创建对象

2024-11-29 08:57:01
推荐回答(2个)
回答1:

如果你要创建的对象依赖于某个文件,那么可以将信息写到配置文件中。

现在配置文件config.properties中有一个名称值对,如何加载它?通过InputStream对象和Properties对象即可轻松办到。

通常分为5步

第一步:得到文件的流对象。第一种方法直接new对象,后面两种都是通过类加载器加载

InputStream is = new FileInputStream("config.properties"); // 相对于项目所在路径
InputStream is = obj.class.getClassLoader().getResourceAsStream("cn/itcast/day1/config.properties");// 相对于包所在路径
InputStream is = obj.class.getResourceAsStream("resource/config.properties"); // 相对于当前类所在路径

第二步:创建Properties对象
Properties prop = new Properties();

第三步:用Properties对象加载流文件
prop.load(is);
is.close(); // 关闭与系统关联的资源,否则即使对象没了,资源还在被占用。

第四步:获取配置文件中的属性
String className = prop.getProperty("className");

第五步:根据配置信息动态创建对象:
Collection collections = (Collection) Class.forName(className).newInstance();

回答2:

进入php源程序目录中的ext目录中,这里存放着各个扩展模块的源代码,选择你需要的模块,比如curl模块:cd curl 执行phpize生成编译文件,phpize在PHP安装目录的bin目录下 /usr/local/php5/bin/phpize 运行时,可能会报错:Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable is set correctly and then rerun this script.,需要安装autoconf: yum install autoconf(RedHat或者CentOS)、apt-get install autoconf(Ubuntu Linux) /usr/local/php5/bin/php -v 执行这个命令时,php会去检查配置文件是否正确,如果有配置错误,这里会报错,可以根据错误信息去排查!