java 框架中反射的作用_java 反射实现框架功能

本文探讨了Java框架如何利用反射实现核心功能,通过框架与工具类的区别阐述框架调用用户类的原理。详细解释了由于在编写框架时无法预知用户类,因此采用反射来创建和调用类实例。并通过一个综合案例,展示了使用配置文件和反射创建ArrayList及HashSet实例的过程,以及Eclipse自动生成equals和hashCode方法的影响。同时,提到了Eclipse对资源文件管理的方法。
摘要由CSDN通过智能技术生成

框架与框架要解决的核心问题

我做房子卖给用户住,由用户自己安装门窗和空调,我做的房子就是框架,用户需要使用我的框架,把门窗插入进我提供的框架中。框架与工具类有区别,工具类被用户的类调用,而框架则是调用用户提供的类。

框架要解决的核心问题

我在写框架(房子)时,你这个用户可能还在上小学,还不会写程序呢?我写的框架程序怎样能调用到你以后写的类(门窗)呢?

因为在写才程序时无法知道要被调用的类名,所以,在程序中无法直接new 某个类的实例对象了,而要用反射方式来做。

综合案例

先直接用new语句创建ArrayList和HashSet的实例对象,演示用eclipse自动生成 ReflectPoint类的equals和hashcode方法,比较两个集合的运行结果差异。

然后改为采用配置文件加反射的方式创建ArrayList和HashSet的实例对象,比较观察运行结果差异。

引入了elipse对资源文件的管理方式的讲解。

Eg:

package july78javaEnhance;

//利用资源文件加上反射操作!

import java.io.FileInputStream;

import java.io.InputStream;

import java.util.Collection;

import java.util.Properties;

public class ReflectPropertiesDemo8 {

public static void main(String[] args) throws Exception {

//写出来的三个全部是可以的,但是相对又不一样!

//可以的绝对路径InputStream ips = new FileInputStream("src/july78javaEnhance/MyPro.properties");//将这个文件加载进来!

//可以的InputStream ips = ReflectPropertiesDemo8.class.getResourceAsStream("MyPro.properties");

InputStream ips = ReflectPropertiesDemo8.class.getClassLoader().getResourceAsStream("july78javaEnhance/MyPro.properties");

Properties pro = new Properties();

pro.load(ips);

ips.close();

String className = pro.getProperty("className");

Collection col = (Collection) Class.forName(className).newInstance();

//Collection col = new TreeSet();//这样的做法也可以但是现在不想通过在等号右边具体的新建名称来做!

col.add(12);

col.add(13);

col.add(12);

col.add(23);

col.add(36);

System.out.println(col);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值