黑马程序员-小框架的实现
来源:互联网 发布:大数据修炼系统醉寒123 编辑:程序博客网 时间:2024/06/04 18:16
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
采用配置文件加反射的方式创建HashSet和ArrayList并运行出结果。
1、className=java.util.HashSet
import java.io.FileInputStream;import java.io.InputStream;import java.util.Collection;import java.util.Properties;class FrameWorkArray{ private int x; private int y; public FrameWorkArray(int x,int y){ this.x=x; this.y=y; }}public class Bb{ public static void main(String[] args)throws Exception { //创建3个构造方法 FrameWorkArray fwa1=new FrameWorkArray(5, 5); FrameWorkArray fwa2=new FrameWorkArray(6, 6); FrameWorkArray fwa3=new FrameWorkArray(5, 5); //加载config.properties文件,内容为className=java.util.ArrayList,可更改 InputStream input=new FileInputStream("config.properties"); //创建配置文件 Properties pro=new Properties(); //从输入流倒入配置文件 pro.load(input); //关闭输入流,否则导致内存泄漏 input.close(); //根据key得到value值 String className=pro.getProperty("className"); //根据className得到Collection的对象 Collection coll=(Collection)Class.forName(className).newInstance(); //填入对象 coll.add(fwa1); coll.add(fwa2); coll.add(fwa3); coll.add(fwa1); System.out.println(coll.size()); }}输出结果为 3下面将className改为java.util.ArrayList
<pre name="code" class="java">import java.io.FileInputStream;import java.io.InputStream;import java.util.Collection;import java.util.Properties;class FrameWorkArray{ private int x; private int y; public FrameWorkArray(int x,int y){ this.x=x; this.y=y; }}public class Bb{ public static void main(String[] args)throws Exception { //创建3个构造方法 FrameWorkArray fwa1=new FrameWorkArray(5, 5); FrameWorkArray fwa2=new FrameWorkArray(6, 6); FrameWorkArray fwa3=new FrameWorkArray(5, 5); //加载config.properties文件,内容为className=java.util.ArrayList,可更改 InputStream input=new FileInputStream("config.properties"); //创建配置文件 Properties pro=new Properties(); //从输入流倒入配置文件 pro.load(input); //关闭输入流,否则导致内存泄漏 input.close(); //根据key得到value值 String className=pro.getProperty("className"); //根据className得到Collection的对象 Collection coll=(Collection)Class.forName(className).newInstance(); //填入对象 coll.add(fwa1); coll.add(fwa2); coll.add(fwa3); coll.add(fwa1); System.out.println(coll.size()); }}输出结果为 4
以上两个程序的代码并没有改变,但结果不同。这是因为程序通过反射得到配置文件的内容,并创建不同的子类对象。
在程序中从输入流读进配置文件的内容后,一定要关闭输入流。close()如果没有的话与对象关联的系统资源没被释放。例如java有一个与操作系统的某一个窗口相对应的对象,当那个窗口使用完毕后不掉用close()关掉那个窗口的话,等于窗口对应的对象被java当成垃圾回收的话就无法再关掉那个窗口了(因为和窗口对应的对象不存在了,就无法再关掉窗口了),这就造成了内存泄漏。
properties相当于HashMap,key--value,key--value......但与HashMap相比扩展了一些功能,他可以将自己内存里的键值对存到硬盘里去文件里边去,他也可以在初始化的时候从一个文件里把自己的键值对加载进来,这与HashMap一个个手工填入值呈对比。
0 0
- 黑马程序员-小框架的实现
- 黑马程序员--集合框架学习小练习
- 黑马程序员_反射的作用-实现框架功能
- 黑马程序员_反射的作用实现框架功能
- 《黑马程序员》 动态代理之Aop框架的实现
- 黑马程序员--反射--实现一个简单的集合操作框架
- 黑马程序员-框架技术实现的手段-反射基础
- 黑马程序员--反射应用实现框架
- 黑马程序员 多线程的实现
- 黑马程序员:Servlet的一点小知识
- 黑马程序员--Winform有关的小知识
- 黑马程序员_集合的小练习
- 黑马程序员---多线程的几个小问题
- 黑马程序员 数据类型的细节小题
- 黑马程序员 常用的一些小算法
- 黑马程序员-动态代理的小总结
- 黑马程序员-static关键字的小总结
- 黑马程序员 Java的集合框架
- leetCode:Minimum Depth of Binary Tree
- HDU-4991-Ordered Subsequence
- 数据结构之排序算法整理(1)
- PowerDesigner 15破解版下载
- 每天一个linux命令(16):which命令
- 黑马程序员-小框架的实现
- 调试成功:server 及 zhujiemian1
- 每天一个linux命令(17):whereis 命令
- 文件传输 个人
- 文件传输 下载
- 每天一个linux命令(18):locate 命令
- 每天一个linux命令(19):find 命令概览
- 每天一个linux命令(20):find命令之exec
- Android 开发技巧集合