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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 何羡玉 中级黑马   /  2013-5-4 15:08  /  1631 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 何羡玉 于 2013-5-5 21:26 编辑

我创建了一个类,想通过反射建立实例对象,调用里面的方法,编译正确,运行异常,是哪里错啊。
package enhanceTest;
import java.lang.*;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
public class reflectTest {
reflectTest(){}
    public void printString()
    {
     System.out.println("反射出来了");
    }
/**
  * @param args
  * @throws ClassNotFoundException
  * @throws SecurityException
  * @throws NoSuchMethodException
  * @throws InvocationTargetException
  * @throws IllegalArgumentException
  * @throws IllegalAccessException
  * @throws InstantiationException
  */
public static void main(String[] args) throws Exception
{

Constructor constructor=Class.forName("reflectTest").getConstructor(null);
    reflectTest re=(reflectTest)constructor.newInstance(null);
    re.printString();
}
}

@[FR@Y491VT~HSFG9$PTWEF.jpg (56.1 KB, 下载次数: 0)

@[FR@Y491VT~HSFG9$PTWEF.jpg

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

4 个回复

倒序浏览
public Constructor<T> getConstructor(Class<?>... parameterTypes)  throws NoSuchMethodException,SecurityException返回一个 Constructor 对象,  它反映此 Class 对象所表示的类的指定公共构造方法。你这里是默认的访问权限所以不行,加上public就可以了

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

回复 使用道具 举报
谢达 发表于 2013-5-4 17:12
public Constructor getConstructor(Class... parameterTypes)  throws NoSuchMethodException,SecurityEx ...

加了public 还是不行呀
回复 使用道具 举报
你在forName()的参数中,把类名写全,加上包名,你再试试
回复 使用道具 举报
黄玉昆 发表于 2013-5-4 22:46
你在forName()的参数中,把类名写全,加上包名,你再试试

加了public后 再加包名就ok了  如果不加public加包名也没有用   如果把构造函数给去掉  只加包名也ok。 哈哈 都试了一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马