Class.forName 问题

来源:百度知道 编辑:UC知道 时间:2024/06/24 05:47:06
Test01.java:
package com.test;
public Test01 class {
Test01(){
System.out.println("test")
}
}
Test02.java
public class Test02{
public static void main(String[] args){
Class c = null;
try{c=Class.forName("com.test.Test01");}
catch(Exception e){
System.out.println("Cannot load Test01");
System.exit(0);
}
try{Test01 t = c.newInstance();}
catch(Exception e){System.out.println("创建实例失败!")
}
}

程序运行后老提示 创建实例失败!

我期望输出 "test"; 各位高手指点
try{Test01 t = c.newInstance();} 改成 Test01 t = (Test01)c.newInstance(); 不然语法错误了!

因为你的Test02.java不在com.test包下,而com.test.Test01的构造函数不是public的,只具有包可见,所以不能创建对象。

提个建议,你的异常处理只是打印了你自己的话,想知道究竟什么问题的话,最好是e.printStackTrace()把所有信息都打印出来,像这个问题,你要是全部打出来的话一下就能知道是什么地方错了

另外,你贴上来的代码不是复制粘贴的么?为什么好几处缺少分号。。