这个问题其实就是一个访问权限的问题 你用的是protected的构造方法
该构造方法在Constructor中无法直接获取 只有通过Demo.class.getDeclaredConstructors(); 才可以获取受保护的构造方法
package test2;
import java.io.EOFException;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
class Demo
{
private String name;
Demo() //你的源代码这里是 缺省值
{
System.out.println("lisi");
}
Demo(String name) //你的源代码这里是 缺省值
{
this.name=name;
}
public void getName()
{
System.out.println(name);
}
}
public class Demo1
{
public static void main(String[] args) throws NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException
{
//new Demo("zhangsan").getName();
//当构造方法是缺省或者私有的时候都必须提供方法 受保护的构造方法只有通过继承才能获取 无法外部访问
Constructor constructor = Demo.class.getDeclaredConstructor(String.class);
Demo d = (Demo) constructor.newInstance("zhangsan");
System.out.println(d);
}
}
|