日期:2014-05-20  浏览次数:20778 次

动态载入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();
        }        
    }
}