黑马程序员--反射--实现一个简单的集合操作框架
2014-10-10 23:08
489 查看
* 问题:
* 已知一个Point类,如何从配置文件中获取具体的集合类,将一系列Point对象添加到集合,然后返回该集合?
* 解决方案:
* 由于具体集合类未知,所以不能直接编写操作方法,需要依据具体的集合称,生成字节码对象,
* 再由字节码对象构造一个实例;
* 这样就可以编写一个简单的框架,在未知具体类的情况下,将Point对象添加到集合中;
* 关键词: 反射 Class 框架
* 已知一个Point类,如何从配置文件中获取具体的集合类,将一系列Point对象添加到集合,然后返回该集合?
* 解决方案:
* 由于具体集合类未知,所以不能直接编写操作方法,需要依据具体的集合称,生成字节码对象,
* 再由字节码对象构造一个实例;
* 这样就可以编写一个简单的框架,在未知具体类的情况下,将Point对象添加到集合中;
* 关键词: 反射 Class 框架
package zhangweicong.example.heima.reflex; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Collection; import java.util.Properties; /** * 问题: * 已知一个Point类,如何从配置文件中获取具体的集合类,将一系列Point对象添加到集合,然后返回该集合? * 解决方案: * 由于具体集合类未知,所以不能直接编写操作方法,需要依据具体的集合称,生成字节码对象, * 再由字节码对象构造一个实例; * 这样就可以编写一个简单的框架,在未知具体类的情况下,将Point对象添加到集合中; * 关键词: 反射 Class 框架 */ public class ReflexFrame { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Point p1=new Point(1, 2); Point p2=new Point(2, 3); Point p3=new Point(3, 4); ReflexFrame reflexFrame= new ReflexFrame(); Collection collection = reflexFrame.getCollection("config.properties", "className"); reflexFrame.add(collection, p1,p2,p3); System.out.println(collection.size()==3?"操作成功":"操作失败"); } public Collection getCollection(String fileName,String property){ InputStream inStream = null; Collection collection=null; Properties properties = new Properties(); try{ inStream=new FileInputStream(fileName); properties.load(inStream); collection = (Collection )Class.forName(properties.getProperty(property)).newInstance(); }catch(IOException e){ e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); }finally{ try{ if(inStream!=null) inStream.close(); }catch(IOException e){ e.printStackTrace(); } } return collection; } public void add(Collection collection ,Point ... points){ for(Point point : points){ collection.add(point); } } } class Point{ private int x; private int y; public Point(int x,int y){ this.setX(x); this.setY(y); } public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } public String toString(){ return "("+x+","+y+")"; } }
相关文章推荐
- 黑马程序员--代理+AOP--实现一个类似spring的可配置的简单AOP框架
- Java实现一个简单的RPC框架(七) 反射机制调用类函数
- C#实现一个简单实用的TXT文本操作及日志框架详解
- 黑马程序员_java反射实现框架,在反过来理解集合框架编程。
- Emit学习-实战篇-实现一个简单的AOP框架(三)
- 如何用phototype框架实现一个简单的ajax验证
- 【Android2D游戏开发十六】(上文之触摸屏手势)详解Android Gesture 手势操作!利用手势实现一个简单切换图片的功能!
- 一个简单的实现matlab数组下标操作的类实现
- 一个自动更新的简单实现(通过反射解耦)
- 一个简单实用的数据库操作框架
- Emit学习-实战篇-实现一个简单的AOP框架(二)
- 利用boost::asio实现一个简单的服务器框架
- 如何使用反射确定一个属性是否实现了IList接口,如何确定元素量为空的集合的元素类型。
- 16—【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能
- 三分钟实现一个插件平台和一个插件——基于最简单的OSGi.NET插件框架
- Emit学习-实战篇-实现一个简单的AOP框架(一)
- 用完成端口(IOCP)实现一个简单的服务器框架
- 【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能!
- 利用boost::asio实现一个简单的服务器框架
- 用Reactor框架实现一个简单的tcp服务器