zoukankan      html  css  js  c++  java
  • java 反射实现框架功能

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

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

    框架要解决的核心问题

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

    因为在写才程序时无法知道要被调用的类名,所以,在程序中无法直接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);

        }

    }

  • 相关阅读:
    sqlmap注入教程
    Burp Suite使用详解一
    手工注入基本思路
    搜索型注入漏洞手工注入过程
    龙灵:特邀国内第一讲师“玄魂” 在线培训黑客神器Kali Linux
    linux grep命令详解
    linux ps命令详解
    linux DNS服务
    linux用户与组管理命令的基本操作
    canvas绘制坐标轴
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11137705.html
Copyright © 2011-2022 走看看