`
lijunaccp
  • 浏览: 159049 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

综合编程

 
阅读更多
题:

三.plugin.xml
<?xml version="1.0" encoding="UTF-8" ?>
  <plugin name="HelloPlugin">
        <author>
                <person>LiTian</person>
                <email>litian@huawei.com</email>
                <site>http://www.huawei.com</site>
        </author>
        <item>
                <key>plugin</key>
                <value>com.huawei.HelloPlugin</value>
        </item>
        <item>
                <key>version</key>
                <value>1.0</value>
        </item>
        <item>
                <key>date</key>
                <value>2009-04-25</value>
        </item>
</plugin>

四.Author.java
package com.chinasoft.exam.demo;

public class Author {

                private String person;
                
                private String email;
                
                private String site;

                public String getPerson() {
                        return person;
                }

                public void setPerson(String person) {
                        this.person = person;
                }

                public String getEmail() {
                        return email;
                }

                public void setEmail(String email) {
                        this.email = email;
                }

                public String getSite() {
                        return site;
                }

                public void setSite(String site) {
                        this.site = site;
                }
                
}

五.Plugin.java
package com.chinasoft.exam.demo;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class Plugin {

        private Author author = new Author();

        private ArrayList items = new ArrayList();

        private Map<String, String> item;

        public Author getAuthor() {
                return author;
        }

        public void setAuthor(Author author) {
                this.author = author;
        }

        public ArrayList getItems() {
                return items;
        }

        public void setItems(ArrayList items) {
                this.items = items;
        }

        public Map<String, String> getItem() {
                return item;
        }

        public void setItem(Map<String, String> item) {
                this.item = item;
        }

        public Plugin call(String name, int age) {
                // 测试参数
                System.out.println("name:" + name + "\t age:" + age);
                File file = new File("src/com/chiansoft/exam/properties/plugin.xml");
                try {
                        DocumentBuilderFactory domfac = DocumentBuilderFactory
                                        .newInstance();
                        DocumentBuilder dombuilder = domfac.newDocumentBuilder();
                        Document document = dombuilder.parse(file);
                        Element root = document.getDocumentElement();
                        NodeList nodeList = root.getChildNodes();
                        if (nodeList != null) {
                                for (int i = 0; i < nodeList.getLength(); i++) {
                                        if (nodeList.item(i).getNodeType() == Node.ELEMENT_NODE
                                                        && nodeList.item(i).getNodeName().equals("item")) {
                                                item = new HashMap<String, String>();
                                                String key = null;
                                                String value = null;
                                                for (Node node = nodeList.item(i).getFirstChild(); node != null; node = node
                                                                .getNextSibling()) {
                                                        if (node.getNodeType() == Node.ELEMENT_NODE
                                                                        && node.getNodeName().equals("key")) {
                                                                key = node.getFirstChild().getNodeValue();
                                                        }
                                                        if (node.getNodeType() == Node.ELEMENT_NODE
                                                                        && node.getNodeName().equals("value")) {
                                                                value = node.getFirstChild().getNodeValue();
                                                        }
                                                }
                                                item.put(key, value);
                                                items.add(item);
                                        } else if (nodeList.item(i).getNodeType() == Node.ELEMENT_NODE
                                                        && nodeList.item(i).getNodeName().equals("author")) {
                                                for (Node node = nodeList.item(i).getFirstChild(); node != null; node = node
                                                                .getNextSibling()) {
                                                        if (node.getNodeType() == Node.ELEMENT_NODE
                                                                        && node.getNodeName().equals("person")) {
                                                                String person = node.getFirstChild()
                                                                                .getNodeValue();
                                                                author.setPerson(person);
                                                        }
                                                        if (node.getNodeType() == Node.ELEMENT_NODE
                                                                        && node.getNodeName().equals("email")) {
                                                                String email = node.getFirstChild()
                                                                                .getNodeValue();
                                                                author.setEmail(email);
                                                        }
                                                        if (node.getNodeType() == Node.ELEMENT_NODE
                                                                        && node.getNodeName().equals("site")) {
                                                                String site = node.getFirstChild()
                                                                                .getNodeValue();
                                                                author.setSite(site);
                                                        }
                                                }
                                        }
                                }
                        }
                } catch (Exception e) {
                        e.printStackTrace();
                }
                return this;
        }
}

六.Operate.java
package com.chinasoft.exam.demo;

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class Operate 
{
        
        private Plugin plugin = null;
        
        //反射知识
        public void setPlugin()
        {
                Object pluginObject = null;
                
                try 
                {
                        
                        Class<?> classDefine = Class.forName("com.chinasoft.exam.demo.Plugin");
                        pluginObject = classDefine.newInstance();
                        
                        //方式一:适用于一个参数
                        /*Method[] methods = classDefine.getDeclaredMethods();
                        for(int i=0;i<methods.length;i++)
                        {
                                Method method = methods;
                                String methodName = method.getName();
                                if(methodName.equals("call"))
                                {
                                        plugin = (Plugin)method.invoke(pluginObject, "zhangbai");
                                }
                        }*/
                        
                        //方式二:适用于多个参数
                        Class[] paramTypes = new Class[]{String.class,int.class};//参数类型数组
                        Object[] params = new Object[]{"zhangbai",23};//参数值数组
                        Method method = classDefine.getDeclaredMethod("call",paramTypes);//获取方法实例
                        plugin = (Plugin)method.invoke(pluginObject, params);//调用call方法并返回Plugin实例
                        
                } 
                catch (Exception e) 
                {
                        e.printStackTrace();
                }
        }
        
        
        public void doTest() 
        {
                
                ArrayList<Object> items = plugin.getItems();
                Iterator<Object> iterator = items.iterator();
                
                for (int i = 0; i < items.size(); i++) 
                {
                        if (iterator.hasNext()) 
                        {
                                
                                Map<String,String> item = (Map<String,String>) iterator.next();
                                Set set = item.entrySet();
                                Iterator keys = set.iterator();
                                
                                for (int j = 0; j < set.size(); j++) 
                                {
                                        if (keys.hasNext()) 
                                        {
                                                Object key = keys.next();
                                                if (key != null) 
                                                {
                                                        System.out.println(key);
                                                }
                                        }
                                }
                        }
                }
                
                Author author = plugin.getAuthor();
                String person = author.getPerson();
                String email = author.getEmail();
                String site = author.getSite();
                
                System.out.println("person:"+person+" \t email:"+email+" \t site:"+site);
        }

        public static void main(String[] args) {
                Operate operate = new Operate();
                operate.setPlugin();
                operate.doTest();
        }
}
分享到:
评论

相关推荐

    ——C语言综合编程训练——

    本综合编程训练主要针对C语言的新手,旨在帮助初学者掌握基本的编程概念和技能,为后续深入学习和实践打下坚实的基础。 1. **基础语法**:C语言的基础包括变量、数据类型(如int、char、float等)、运算符(算术、...

    MATLAB综合编程5

    这个名为“MATLAB综合编程5”的压缩包显然包含了多个资源,帮助用户深入理解和掌握MATLAB的各个方面。以下是根据提供的文件名解析出的相关知识点: 1. **MATLAB命令大全.pdf**:这本书可能是MATLAB所有内置函数和...

    MATLAB综合编程4

    包含: MATLAB 5.X程序设计语言.pdf、 MATLAB 5.X入门与应用.pdf、 MATLAB 5.X应用与技巧.pdf、 MATLAB 编程风格指南.pdf、 MATLAB编程.pdf、 MatLab工程数学应用.pdf、

    2022年数控车床综合编程实例解析(共14张PPT).pptx

    "2022年数控车床综合编程实例解析" 本资源是关于数控车床综合编程实例的解析,共14张PPT。该资源详细介绍了数控车床编程的基础知识和实践操作,涵盖了数控车床编程的基本概念、编程语言、编程步骤、刀具选择、工件...

    MATLAB综合编程1

    本资源“MATLAB综合编程1”提供了对MATLAB 5.X版本的深入理解和实践指导,包括三个主要文档:“MATLAB5.X程序设计语言.pdf”、“MATLAB5.X入门与提高.pdf”以及“MATLAB5手册.pdf”。 “MATLAB5.X程序设计语言.pdf...

    三菱GX Works2 PLC综合编程软件(中文).zip

    《三菱GX Works2 PLC综合编程软件详解》 三菱GX Works2是一款专为三菱PLC设计的集成编程软件,尤其在中文环境下,它为用户提供了友好的界面和强大的功能,极大地提升了编程效率。这款软件适用于Windows 10操作系统...

    数控车床综合编程实例解析(ppt-15页).ppt

    《数控车床综合编程实例解析》 在数控车削加工中,编程是至关重要的环节,它直接影响着加工精度和效率。本实例通过两个具体的零件加工案例,深入解析了数控车床的综合编程方法。 首先,我们来看一个复杂轴类零件的...

    第七章-复杂零件综合编程实例(共90张PPT).pptx

    【第七章-复杂零件综合编程实例】主要涵盖了在数控加工中如何对复杂零件进行编程,以实现面铣削、外形铣削、挖槽铣削、钻孔和雕刻文字等多种加工工艺。这一章节通过一个具体的复杂零件编程模型进行讲解,旨在帮助...

    综合编程训练PPT学习教案.pptx

    【综合编程训练】是计算机科学中的一个重要环节,它旨在通过实际项目来提升学生的编程技能和问题解决能力。在这个PPT学习教案中,我们看到的是一个关于五子棋游戏程序的综合实例,它详细介绍了从软件开发的初始阶段...

    ASIC芯片设计静态时序分析(STA)验证综合编程规范IC设计与方法等文档资料.rar

    ASIC芯片设计静态时序分析(STA)验证综合编程规范IC设计与方法等文档资料: ASIC Guide from Atmel.pdf asic_design_guide.pdf ASIC中的异步时序设计.doc ASIC设计教程.pdf asynchronous signals in a synchronous ...

    数控车床综合编程实例.pptx

    《数控车床综合编程实例》 本篇内容主要讲解了两个数控车床编程的实例,分别涉及轴类零件和盘类零件的加工。在数控车床上进行编程时,需考虑工件材质、毛坯类型、刀具选择、切削用量、装夹方式等多个因素,以确保...

    数控车床综合编程PPT学习教案.pptx

    《数控车床综合编程》的学习教案涵盖了多个关键知识点,这些知识点对于理解和操作数控车床至关重要。以下是详细解析: 1. **子程序的调用与结束**: - 子程序的番号通常以“%xxxx”表示,是调用子程序的入口地址,...

    浙大中控DCS系统AdvanTrol Pro软件培训-编程综合编程案例.ppt

    浙大中控DCS系统AdvanTrol Pro软件培训-编程综合编程案例 以下是根据给定的文件生成的相关知识点: TIMER 定时器应用 * 定时器的工作原理:定时器是一种特殊的计时器模块,用于实现定时控制和延迟控制。 * ...

    C语言综合编程训练剖析PPT学习教案.pptx

    【C语言综合编程训练剖析】的学习教案主要涵盖了C语言编程的基本概念、程序构成、开发流程以及几个具体的实例分析。在C语言编程中,程序通常由预编译命令、函数等部分组成,遵循自上向下、逐步细化、模块化设计和...

    Java GUI综合编程实验报告

    Java GUI综合编程实验报告

    c语言综合编程训练

    一个c语言综合编程训练文档,综合训练的PPT

    数控车床综合编程实例解析.pptx

    数控车床综合编程实例解析.pptx

    数控铣床综合编程实训.pptx

    数控铣床综合编程实训.pptx

Global site tag (gtag.js) - Google Analytics