反射的应用---实习框架功能
来源:互联网 发布:lasso算法 编辑:程序博客网 时间:2024/05/21 22:44
- 框架和框架要解决的核心问题
我去买房子,房子是开发商已经建造好的了,那么我需要做门窗,我还需要买锁,房子就是框架,谁买就是谁的,我在用框架,就是框架在调用我的类(门窗),锁就是工具类,我在调用锁。
人们不需要自己去建造房子,只需花钱买一个半成品的房子,然后自己去装修,形成一个个不一样的房子,实际上,用框架完成项目也是一样的道理,我们都在用相同的框架,但是却写出出一个个不同的项目,而使用框架我们也大大提高了开发效率。
- 写框架的人肯定不能在程序中去new某个类,因为这时候并不知道将来的调用者的行为,所以使用Class.forName()的方式。
- 使用配置文件来动态获取类名
这是config.properties文件的内容,由程序自动读取,获取类名
className=java.util.HashSet
public class ReflectTest3 {
public static void main(String[] args) throws Exception {
InputStream is = new FileInputStream("config.properties");
//继承了HashTable, 等效HashMap,内存里是KV键值对,但是Properties可以把自己内存
//的键值对存到硬盘的文件里面去,也可以从文件里把键值对加载进来
Properties properties = new Properties();
properties.load(is);
is.close();//这里不关闭不是说is这个对象不被释放,而是is关联的系统资源没被释放。
String className = properties.getProperty("className");
Collection collection = (Collection) Class.forName(className).newInstance();
ReflectPoint rp1 = new ReflectPoint(3, 3);
ReflectPoint rp2 = new ReflectPoint(5, 5);
ReflectPoint rp3 = new ReflectPoint(3, 3);
//Collection collection = new HashSet();
collection.add(rp1);
collection.add(rp2);
collection.add(rp3);
collection.add(rp1);
rp1.y=7;
//collection.remove(rp1);
System.out.println(rp1==rp3);
System.out.println(collection.size());
}
}
- 管理资源文件路径问题
//InputStream is = ReflectTest3.class.getClassLoader().getResourceAsStream("com/newTech/day0/config.properties");
//不经过类加载器,直接由类字节码本身来获得,字节码判断有自己的路径判断出配置文件的路径,相对路径
//InputStream is = ReflectTest3.class.getResourceAsStream("xx/config.properties");
//绝对路径,从根目录开始寻找
InputStream is = ReflectTest3.class.getResourceAsStream("/com/newTech/day0/xx/config.properties");
学了这几节课的反射,那么反射到底有什么应用呢?
- 反射的应用---实习框架功能
- 8.9反射的应用 实现框架的功能
- 简单的反射框架应用
- 框架原理反射的应用
- 反射:Class类、反射概念、类中各成员的反射、反射的应用、数组的反射、框架
- struts2框架是如何应用反射的
- DAY22-反射实现框架功能
- 黑马程序员_反射的作用-实现框架功能
- 黑马程序员_反射的作用实现框架功能
- 基础加强____【反射的作用__实现框架功能】
- Java反射机制在Android自动化测试框架的应用
- 类反射学习(二)JAVA开发框架底层思想演示,以及类反射的应用
- 我的暑期实习----功能展示
- Android实习02:"摇一摇"功能的实现
- 5.1JEE实习 downLoad 功能的实现
- 5.2JLL实习 import 功能的实现
- Android 的媒体路由功能应用与框架解析
- Android 的媒体路由功能应用与框架解析 MediaRouter
- STL 整理(map、set、vector、list、stack、queue、deque、priority_queue)
- Overview of Segments【每日一译】--2012-10-24
- What is the difference between a processor, a chip, a socket, and a core?
- 烙饼排序
- 在Linux内核中打印日志时间戳
- 反射的应用---实习框架功能
- php 文件下载
- 给EditText添加ChangedListener(内容改变监听)
- DB2中的DECIML类型
- 使用CoreText排版,取得文字区域精确大小
- myeclipse 安装subclipse, SVN 插件 SVN的使用 导入jar包
- 我国挪动互联网全球比赛占先机
- 利用VC++与MSXML解析XML文档
- PowerDesigner15使用时的十五个问题