当前位置: 代码迷 >> J2SE >> 动态载入jar包里的类解决办法
  详细解决方案

动态载入jar包里的类解决办法

热度:101   发布时间:2016-04-24 02:08:28.0
动态载入jar包里的类
已经载入jar包里类MyParser,
其中MyParser extends Parser{}

在主程序里也有一个相同的Parser类,在主程序里将MyParser的对象转换为Parser类型时出错. 代码如下:
  myClass = cl.loadClass("com.jb.book.parse.MyParser");
  Object obj = myClass.newInstance();
   
  Parser parser = ((Parser)obj);
  String ret = parser.getData(15, 20);

请问有办法可以将MyParser的对象转换为Parser类型 吗?
 


------解决方案--------------------
错误内容是什么?
------解决方案--------------------
ClassCast了吧?


用你的自定义类装载器装载MyParser和Parser
------解决方案--------------------
Java code
将下列类打入jar包:package com.kouyi.test.vo;public class UserExtend {    private String user_id = "1";    private String remark;    public String getUser_id() {        return user_id;    }    public void setUser_id(String user_id) {        this.user_id = user_id;    }    public String getRemark() {        return remark;    }    public void setRemark(String remark) {        this.remark = remark;    }}新建一个UserExtend类package com.kouyi.test.action;public class UserExtend {    /**     * @param args     */    public static void main(String[] args) {        try {            Class cl = ClassLoader.getSystemClassLoader().loadClass("com.kouyi.test.vo.UserExtend");            com.kouyi.test.vo.UserExtend obj = (com.kouyi.test.vo.UserExtend) cl.newInstance();            String ret = obj.getUser_id();            System.out.println(ret); // 输出为1        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }            }}
  相关解决方案