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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 贾浩田 高级黑马   /  2014-8-17 11:51  /  1145 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我在使用Class类中的获取带参数构造函数进行编译时会出现警告,Constructor con = cc.getConstructor(String.class, double.class); 是不是因为没有加泛型的原因?而且编译时会出现NoneSuchMethodException,不知大家有没有遇到过?

10 个回复

倒序浏览
double应该大写吧骚年!{:3_47:}
回复 使用道具 举报
咸菜+萝卜干 发表于 2014-8-17 12:24
double应该大写吧骚年!

依旧报同样的异常
回复 使用道具 举报
如果构造函数是public,double.class改成Double.class试试。不是public 就得设置它的访问权限。
回复 使用道具 举报
贾浩田 发表于 2014-8-17 12:37
依旧报同样的异常

你把完整的代码发过来看看,包括文件名
回复 使用道具 举报
咸菜+萝卜干 发表于 2014-8-17 14:10
你把完整的代码发过来看看,包括文件名

public static void CreateObject() throws Exception {
        //早期运行时
        //原始创建对象的方式,在所在classPath路径去找名字为Test类的
        //字节码.class文件(编译时创建的),并将其加载进内存,并在堆内存中开辟空间
        Test t1 = new Test();
        Test t2 = new Test("asdf", 34);   


        //现在,只有类名,类存在不存在不知道
        //我也想完成创建对象的步骤
        String className = "Test";
        Class cc = null;
        try{
            //通过名称获取类的字节码文件,并加载进内存,产生Class文件
            cc = Class.forName("Test");
            System.out.println("测试");
        }
        catch (ClassNotFoundException e){}
        
        try
        {   //通过Class类对象cc中的空参数构造函创建一个新实例
            Object obj = cc.newInstance();
        }
        catch (InstantiationException e){}
        catch (IllegalAccessException e){}

        //如果要通过制定构造函数进行对象初始化怎么办呢?
        //获取该字节码文件对象中的所有共有构造方法
        //返回执行类型的构造器对象
        Constructor con = cc.getConstructor(String.class, Double.class);
        //使用构造器对象的newInstance()方法,
        //来创建该构造方法的声明类的新实例,
        //并用指定的初始化参数初始化该实例。
        Object obj = con.newInstance("zhangsan", 45.2);
}

回复 使用道具 举报
贾浩田 发表于 2014-8-17 14:26
public static void CreateObject() throws Exception {
        //早期运行时
        //原始创建对象的 ...

我不知道你的Test类的构造函数是怎么样的,但是我猜 Test类的构造函数的权限应该有些问题,你在Test类构造函数的前面加上public应该可以!试试{:3_47:}
回复 使用道具 举报
咸菜+萝卜干 发表于 2014-8-17 14:54
我不知道你的Test类的构造函数是怎么样的,但是我猜 Test类的构造函数的权限应该有些问题,你在Test类构 ...

Test类的构造函数是个空参的显式构造
回复 使用道具 举报
贾浩田 发表于 2014-8-17 15:50
Test类的构造函数是个空参的显式构造

你这不是搞笑嘛?既然是空参数的,你往里面传值当然找不到,这不明显的嘛?还有什么可疑问的?{:3_49:}
回复 使用道具 举报
这是第几天的。。。还没学到哪里!!:'(
回复 使用道具 举报
THE_FUTURE 发表于 2014-8-17 17:32
这是第几天的。。。还没学到哪里!!

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