关于反射机制的初级问题

mrliu0905 2014-09-17 02:08:08
package mrliu.reflect;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

public class Test {

/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
Class clazz = Class.forName("mrliu.reflect.Person");
Constructor c = clazz.getConstructor(null);
Person p = (Person) c.newInstance(null);

// Constructor c = clazz.getConstructor(String.class);
// Person p3 = (Person) c.newInstance("ddd");

// Person p2 = (Person) clazz.newInstance();
}
}

package mrliu.reflect;

public class Person {


Person(){
System.out.println("person()");
}

Person(String p){
System.out.println("person()"+p);
}
}

为什么会报错呢?
Exception in thread "main" java.lang.NoSuchMethodException: mrliu.reflect.Person.<init>()
at java.lang.Class.getConstructor0(Class.java:2706)
at java.lang.Class.getConstructor(Class.java:1657)
at mrliu.reflect.Test.main(Test.java:15)
明明有构造函数啊
...全文
143 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mrliu0905 2014-09-17
  • 打赏
  • 举报
回复
果然加public才是正确的
dzq584462393 2014-09-17
  • 打赏
  • 举报
回复
在构造方法上加public才对
windsunmoon 2014-09-17
  • 打赏
  • 举报
回复
引用 1 楼 sky_walker85 的回复:
你去掉null试试
正解
糖几颗的 2014-09-17
  • 打赏
  • 举报
回复
构造方法前面加上public... 否则构造方法是不能在外部调用, 就造成了不能在外部new出对象....
skyWalker_ONLY 2014-09-17
  • 打赏
  • 举报
回复
你去掉null试试

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧