A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Friendy89 中级黑马   /  2013-8-30 20:19  /  1226 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Friendy89 于 2013-8-31 01:04 编辑

各位大侠帮忙看下,这段代码有什么问题,为什么通过反射创建的Person对象,无法获取name和age
  1. import java.lang.reflect.Constructor;

  2. public class ReflectTest {

  3. /**
  4. * @param args
  5. * @throws Exception
  6. * @throws SecurityException
  7. */
  8. public static void main(String[] args) throws Exception {
  9. // TODO Auto-generated method stub
  10. Constructor constructor = Person.class.getConstructor(String.class,int.class);
  11. Person person = (Person) constructor.newInstance("wbl",24);
  12. System.out.println(person.getName()+":::"+person.getAge());
  13. }
  14. }
  15. class Person {
  16. private String name ;
  17. private int age ;
  18. Person(String name, int age) {
  19. super();
  20. this.name = name;
  21. this.age = age;
  22. }
  23. public String getName() {
  24. return name;
  25. }
  26. public void setName(String name) {
  27. this.name = name;
  28. }
  29. public int getAge() {
  30. return age;
  31. }
  32. public void setAge(int age) {
  33. this.age = age;
  34. }
  35. @Override
  36. public String toString() {
  37. return "Person [name=" + name + ", age=" + age + "]";
  38. }

  39. }
复制代码




评分

参与人数 1技术分 +1 收起 理由
黄文伯 + 1 很给力!

查看全部评分

7 个回复

倒序浏览
同求~~~~~{:soso_e129:}帮顶一下
回复 使用道具 举报
哥们你的Person的构造方法要用public还修饰,反射只能获取到公共的构造方法.内部类默认情况下是私有的
回复 使用道具 举报
额。还是我来解答吧。构造方法public 才是公共调用。
Constructor<Person> constructor = Person.class.getConstructor(String.class,int.class);给这个加上泛型吧。下面就不用强转了,可以把前面那碍眼的感叹号弄消失
回复 使用道具 举报
潘才新 发表于 2013-8-30 22:51
额。还是我来解答吧。构造方法public 才是公共调用。
Constructor constructor = Person.class.getConstruc ...

你运行了吗,可以出结果吗,为什么我改成public class Person了还是一样呢
你能把你的完整代码和运行结果发过来看下嘛
回复 使用道具 举报
Friendy89 发表于 2013-8-30 23:22
你运行了吗,可以出结果吗,为什么我改成public class Person了还是一样呢
你能把你的完整代码和运行结果 ...

不是把类公共,是把构造方法公共
  • public Person(String name, int age) {
  • super();
  • this.name = name;
  • this.age = age;
  • }

评分

参与人数 1技术分 +1 收起 理由
黄文伯 + 1 很给力!

查看全部评分

回复 使用道具 举报
潘才新 发表于 2013-8-31 00:00
不是把类公共,是把构造方法公共
  • public Person(String name, int age) {

  • 明白了,灰常感谢
    回复 使用道具 举报
    亲,如问题已解决请将分类的“未解决”改为“已解决”。
    以后的问题贴也要及时更改分类哦~
    回复 使用道具 举报
    您需要登录后才可以回帖 登录 | 加入黑马