public class Test {
public static void main(String[] args)throws Exception {
try {
//得到类中的默认无参构造方法,怎么会出错呢?
Person p=Person.class.getDeclaredConstructor().newInstance();
p.printName();
}catch (Exception e){
e.printStackTrace();
}
}
class Person {
public void printName(){
System.out.println("lijing");
}
}
}作者: 武庆东 时间: 2012-9-13 01:21 本帖最后由 武庆东 于 2012-9-13 01:56 编辑
可改为
public class Test {
public static void main(String[] args)throws Exception {
try {
//得到类中的默认无参构造方法,怎么会出错呢?原题中Person是内部类,不能直接创建对象
Person p=Person.class.getDeclaredConstructor().newInstance();
Method me=Person.class.getMethod("printName");
me.invoke(p);
}catch (Exception e){
e.printStackTrace();
}
}
}
class Person {
public void printName(){
System.out.println("lijing");
}
}
getConstructor
public Constructor<T> getConstructor(Class<?>... parameterTypes)
throws NoSuchMethodException,
SecurityException返回一个 Constructor 对象,它反映此 Class 对象所表示的类的指定公共构造方法。
getDeclaredConstructor
public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)
throws NoSuchMethodException,
SecurityException返回一个 Constructor 对象,该对象反映此 Class 对象所表示的类或接口的指定构造方法。 作者: 黑马-王言龙 时间: 2012-9-13 07:25 本帖最后由 黑马-王言龙 于 2012-9-13 07:28 编辑
class Demo {
public static void main(String[] args) {
try {
//得到类中的默认无参构造方法,怎么会出错呢? /*答:静态无法访问非静态,给Person加static即可
不加静态它会提示找不到Person类*/
Person p = Person.class.getDeclaredConstructor().newInstance();
p.printName();
}catch (Exception e){
e.printStackTrace();
}
}
static class Person {
public void printName(){
System.out.println("lijing");
}
}
}作者: 李菁 时间: 2012-9-13 15:01
明白了,问题已经解决了,谢谢大家!