美文网首页我爱编程
第四部分 通过XML再谈反射意义

第四部分 通过XML再谈反射意义

作者: 孙浩j | 来源:发表于2017-12-04 17:54 被阅读18次

前提:每个XML元素都有一个id属性和一个class属性

外部调用一个方法,传id参数就可以获取,这个xml元素对应的对象

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import java.util.Map.Entry;

import java.util.Set;

import org.dom4j.Document;

import org.dom4j.Element;

import org.dom4j.io.SAXReader;

//实现一个万能查找元素的XML的方法,

public class ClassPathXmlApplicationContextimplements ApplicationContext {

Stringconf = null;

publicClassPathXmlApplicationContext(String conf) {

this.conf= conf;

}

//conf表示的是xml的位置

@Override

public T getBean(String id) throws Exception {

SAXReader reader = new SAXReader();

Document doc = reader.read(conf);

Element ele = doc.getRootElement();

List list = ele.elements();//list里面装的是所有子节点

Map map = new HashMap<>();

for(Elemente : list){//每个元素都有一个id属性

String idd =e.attribute("id").getValue();

String className =e.attribute("class").getValue();

map.put(idd, className);//将id值和class值存到map集合里

//id表示类名,className表示全类名

}

Class clazz = null;

//遍历map

Set set = map.entrySet();

for(Entryentry : set)

{

String key = entry.getKey();

System.out.println(key);

if(key.equals(id))

{

String clsName = map.get(key);

clazz = Class.forName(clsName); //得到元素对应类的反射对象

}

}

T t = null;

t= (T) clazz.newInstance(); //通过反射对象获得对应类的对象

return t;

}

/*在这里我们发现在获取类对象的时候,是先获得了反射类对象,再通过其对象获得所反射类的对象

这样做的原因也正解释了反射存在的意义:id对应着全类名,我们可以通过知道id的方式获得全类名,得到全类名虽然我们知道了类名,但是不知道构造函数无法直接创建对象,而反射就可以通过先建立反射对象再创建类对象的方法得到这个类的对象。(clsName指代全类名,而无法表示构造函数,所以无法使用new的方法创建对象)*/

}

相关文章

  • 第四部分 通过XML再谈反射意义

    前提:每个XML元素都有一个id属性和一个class属性 外部调用一个方法,传id参数就可以获取,这个xml元素对...

  • Spring IOC一分钟理解

    IOC,其实就是通过反射、xml解析等技术实现一个对象容器。通过xml配置的方式来告诉容器,应该将哪些bean到容...

  • Day_03_XML+反射

    使用dom4j解析XML,同时通过反射来执行解析出来的Servelet

  • Xlua的去反射

    xlua的去反射:xlua使用的去反射是将反射的字段先写入到一个xml表里,然后根据xml表的字段来生成去反射类(...

  • 再谈Java反射

    在日常开发中尽量不要用反射,如果需要,先考虑通过复制原始类的形式来避免反射,还不行再考虑通过反射。 反射能帮我们做...

  • Spring的注解注入机制与XML注入机制

    1. XML注入方式 其逻辑就是用XML形式可以在配置文件中,配置我们自己写的类和外部库的类,Spring通过反射...

  • 反射和xml

    反射机制的定义 Java反射机制是指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对...

  • 再谈“意义”问题 (岩竹呓语·八五)

    再谈“意义”问题 (岩竹呓语·八五) 所谓意义...

  • 七、反射

    一、反射机制 : 将类的各个部分 组成一个新的对象(Class 对象) 就是反射机制 二、获取反射对象 通过 对象...

  • Spring IoC简单实现

    1、概述 Spring容器的原理就是基于解析XML文件、反射创建Bean、通过工厂模式管理Bean集合, 只需要调...

网友评论

    本文标题:第四部分 通过XML再谈反射意义

    本文链接:https://www.haomeiwen.com/subject/bpztixtx.html