"为什么构造函数加个public就 可以了,不加就会抛异常呢?"
构造方法完全可以不加public,直接private都可以的.但是代码要稍微改一下:- Constructor<?> cs = Person.class.getDeclaredConstructor(String.class,
- int.class);
复制代码 改成这样就对了,注意是getDeclaredConstructor()方法哦.
明白了吗,这个方法是可以取得Person类的所有的构造方法,包括private修饰的构造方法.
而getConstructor()方法只能取得Person类的public修饰的构造方法哦.
简单点说,就是getConstructor()方法与getDeclaredConstructor()方法的区别,注意那"Declared"哦,这个是问题的关键.
不止构造方法是这样,包括普通方法(静态和非静态的方法都是由Method类来表示),字段(由Field来表示),还有参数,异常,我就不一一说下去了.我只想说,取得方法也好,字段也罢,一定要注意方法名中有没有"Declared"存在. |