黑马程序员技术交流社区

标题: 关于反射的一个小问题 [打印本页]

作者: 贾浩田    时间: 2014-8-17 11:51
标题: 关于反射的一个小问题
我在使用Class类中的获取带参数构造函数进行编译时会出现警告,Constructor con = cc.getConstructor(String.class, double.class); 是不是因为没有加泛型的原因?而且编译时会出现NoneSuchMethodException,不知大家有没有遇到过?
作者: 咸菜+萝卜干    时间: 2014-8-17 12:24
double应该大写吧骚年!{:3_47:}
作者: 贾浩田    时间: 2014-8-17 12:37
咸菜+萝卜干 发表于 2014-8-17 12:24
double应该大写吧骚年!

依旧报同样的异常
作者: そ花痕ゐ蝶梦    时间: 2014-8-17 14:01
如果构造函数是public,double.class改成Double.class试试。不是public 就得设置它的访问权限。
作者: 咸菜+萝卜干    时间: 2014-8-17 14:10
贾浩田 发表于 2014-8-17 12:37
依旧报同样的异常

你把完整的代码发过来看看,包括文件名
作者: 贾浩田    时间: 2014-8-17 14:26
咸菜+萝卜干 发表于 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:54
贾浩田 发表于 2014-8-17 14:26
public static void CreateObject() throws Exception {
        //早期运行时
        //原始创建对象的 ...

我不知道你的Test类的构造函数是怎么样的,但是我猜 Test类的构造函数的权限应该有些问题,你在Test类构造函数的前面加上public应该可以!试试{:3_47:}
作者: 贾浩田    时间: 2014-8-17 15:50
咸菜+萝卜干 发表于 2014-8-17 14:54
我不知道你的Test类的构造函数是怎么样的,但是我猜 Test类的构造函数的权限应该有些问题,你在Test类构 ...

Test类的构造函数是个空参的显式构造
作者: 咸菜+萝卜干    时间: 2014-8-17 16:20
贾浩田 发表于 2014-8-17 15:50
Test类的构造函数是个空参的显式构造

你这不是搞笑嘛?既然是空参数的,你往里面传值当然找不到,这不明显的嘛?还有什么可疑问的?{:3_49:}
作者: THE_FUTURE    时间: 2014-8-17 17:32
这是第几天的。。。还没学到哪里!!:'(
作者: 贾浩田    时间: 2014-8-18 10:54
THE_FUTURE 发表于 2014-8-17 17:32
这是第几天的。。。还没学到哪里!!

第26天的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2