黑马程序员技术交流社区

标题: 反射这里哪里错了 求大神解析啊啊啊 [打印本页]

作者: 13706649811    时间: 2015-9-11 14:39
标题: 反射这里哪里错了 求大神解析啊啊啊
/**
*
*/
package com.bsdmlx;

import java.lang.reflect.Constructor;
/**
* @author Administrator
*
*/
public class Test9 {

        /**
         * @param args
         */
        public static void main(String[] args) throws Exception{
                // TODO 自动生成的方法存根
                Class clazz = Class.forName("com.bsdmlx.Student");

                Constructor c =clazz.getConstructor(String.class,int.class);
}
class Student{
        private String name;
        private int age;
        public Student(String name,int age){
                this.name=name;
                this.age=age;
        }
        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
        public int getAge() {
                return age;
        }
        public void setAge(int age) {
                this.age = age;
        }
}


作者: 13706649811    时间: 2015-9-11 14:40
我想知道 构造函数哪里 为什么要加public
不加就有有错误是为什么
作者: 13706649811    时间: 2015-9-11 14:41
知道 的回复下啊  谢谢谢谢谢  
作者: 邓士林    时间: 2015-9-11 16:31
     Constructor c =clazz.getConstructor(String.class,int.class);你是获取指定类型的构造函数,所以必须为public,才能访问,不然你无法使用啊!比如你把此构造函数定义为private,你就不发new对象
作者: 13706649811    时间: 2015-9-11 16:36
邓士林 发表于 2015-9-11 16:31
Constructor c =clazz.getConstructor(String.class,int.class);你是获取指定类型的构造函数,所以必 ...

那要是提供的构造函数没有修饰符 那不是有字节码也不能创建对象了,里面的方法也拿不出来了是吗?




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