A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 游洪波 中级黑马   /  2012-6-30 10:10  /  1886 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这个是config。properties中的内容
className=text8.DemoClass
这个是text8。DemoClass类中的内容
package text8;

public class DemoClass {
          public DemoClass(){
                  
          }
          public void run()
          {
             System.out.println("welcome to heima!");
          }   
   }
下边是Test类中的代码

public class Test {

        /**
         * @param args
         */
        public static void main(String[] args) throws Exception{
                // TODO Auto-generated method stub
                InputStream ips=new FileInputStream("config.properties");
                Properties ps=new Properties();
                ps.load(ips);
                ips.close();
                System.out.println(ps.getProperty("className"));
                String className=ps.getProperty("className");
                Collection collections=(Collection)Class.forName(className).newInstance();//这句话一直出异常,不知道怎么回事啊。。。               
        
        }

}
异常信息。。。。
Exception in thread "main" java.lang.ClassCastException: text8.DemoClass cannot be cast to java.util.Collection
        at text8.Test.main(Test.java:22)

6 个回复

倒序浏览
类转换异常了 你在试图将DemoClass对象转换成Collection对象
回复 使用道具 举报
马林康 发表于 2012-6-30 10:23
类转换异常了 你在试图将DemoClass对象转换成Collection对象

我主要是不知道怎么解决啊
回复 使用道具 举报
DemoClass dc=(DemoClass)Class.forName(className).newInstance();
回复 使用道具 举报
Collection collections=(Collection)Class.forName(className).newInstance();      
楼主这句话为什么要这样写??如果是反射的话其实你直接用Object也是完全可以的啊。
比如你这样写:
Object o = Class.forName(className).newInstance();

然后呢你如果去执行这个类中的run()方法可以这样:
Method m = c.getMethod("run", null);
m.invoke(o, null);//在这里把刚刚得到的Object对象带入
回复 使用道具 举报
大哥,collection是一个接口,你用一个Object类型的对象实例去给一个接口赋值肯定会爆类型转换错误啊,还有楼上的,既然想用反射就不应该出现Democlass,字节码new出来的对象都可以用Object来接受然后对这个对象来进行方法的调用
回复 使用道具 举报
另外Collection是一个集合类的顶级接口,里面可以存放Object类型的对象,然而你将Object对象当成一个集合就说不通了,这就好像你在一个朋友家住着,这就好比你被放进了一个集合中 (房子)难道你能说你就说 你就能转换成房子了  一个道理 我觉得 呵呵

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马