JAVA反射机制 框架的概念及用反射技术开发框架的原理 和用类加载的方式获取配置文件的路径问题...

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

比如  我做房子卖给用户,由用户自己去安装窗和们  我做的房子就是框架  用户需

要实用我的框架  把门和窗户插入到我的房子里面 
框架与工具类有区别?
工具类被用户的类调用   内框架则是调用用户提供的类

2 框架要解决的核心问题

我在做房子(框架)时,你这个用户可能还在上小学 还不会写程序呢  我的框架怎

么去调用你以后写的类(门窗)呢?
因为在写程序时无法知道要调用的类名  所以  在程序中无法直接new 某个类的实例

出来  而要通过反射的方法来实现

 

3 通过类加载器 去找到配置文件的路径

下面通过配置文件写一个小例子

 

package com.sg.reflex;

import java.io.InputStream;
import java.util.Collection;
import java.util.Properties;

public class FrameReflexTest {
    public static void main(String[] args) throws Exception{
       
        //首先加载配置文件  config.properties在这里直接放在工程的目录下面了
        //一般放在新建的某个包文件下面  通过绝对路径去找到
        //InputStream ips = new FileInputStream("config.properties");
       
        //通过类加载器 去找到配置文件的路径  加入配置文件放在了
        //InputStream ips = FrameReflexTest.class.getClassLoader().getResourceAsStream("com/sg/config/config.properties");
       
        //还可以使用 前提是和你的类在同一个包下面就可以不用下包名  直接写文件名
        InputStream ips = FrameReflexTest.class.getResourceAsStream("config.properties");
        Properties properties = new Properties();
        properties.load(ips);
        properties.clone();
        //获取配置文件的key为className的value值
        String className = String.valueOf(properties.get("className"));
       
        //通过反射newInstance()实例化
        Collection collections = (Collection) Class.forName(className).newInstance();
       
       
        ReflecClassPoint rcp1 = new ReflecClassPoint(3, 3);
        ReflecClassPoint rcp2 = new ReflecClassPoint(5, 5);
        ReflecClassPoint rcp3 = new ReflecClassPoint(3, 3);
     
       
        //把这些对象 放到集合中去
        collections.add(rcp1);
        collections.add(rcp2);
        collections.add(rcp3);
        collections.add(rcp1);
       
        System.out.println(collections.size());
    }
}    

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值