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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张学东 中级黑马   /  2012-10-27 23:17  /  1614 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张学东 于 2012-10-27 23:26 编辑
  1. <p>package com.itheima.fans;</p><p>import java.lang.reflect.Constructor;
  2. import java.lang.reflect.InvocationTargetException;</p><p>public class Demo4 {</p><p> /**
  3.   * 通过Class调用其他类中的构造函数 (也可以通过这种方式通过Class创建其他类的对象)
  4.   */
  5. public static void main(String[] args) {
  6.   Class demo=null;
  7.   try {
  8.    demo=Class.forName("com.itheima.fans.Person");
  9.   } catch (ClassNotFoundException e) {
  10.    // TODO Auto-generated catch block
  11.    e.printStackTrace();
  12.   }
  13.   Person per1=null;
  14.   Person per2=null;
  15.   Person per3=null;
  16.   Person per4=null;
  17.   //取得全部的构造函数
  18.   Constructor cons[]=demo.getConstructors();
  19.   try {
  20.    per1=(Person)cons[0].newInstance();
  21.    per2=(Person)cons[1].newInstance("zhangsan");
  22.    per3=(Person)cons[2].newInstance(25);
  23.    per4=(Person)cons[3].newInstance("zhangsan",25);
  24.    
  25.   } catch (IllegalArgumentException e) {
  26.    // TODO Auto-generated catch block
  27.    e.printStackTrace();
  28.   } catch (InstantiationException e) {
  29.    // TODO Auto-generated catch block
  30.    e.printStackTrace();
  31.   } catch (IllegalAccessException e) {
  32.    // TODO Auto-generated catch block
  33.    e.printStackTrace();
  34.   } catch (InvocationTargetException e) {
  35.    // TODO Auto-generated catch block
  36.    e.printStackTrace();
  37.   }
  38.   System.out.println(per1);
  39.   System.out.println(per2);
  40.   System.out.println(per3);
  41.   System.out.println(per4);
  42.   </p><p> }</p><p>}
  43. class Person{
  44. private String name;
  45. private int age;

  46. public String getName() {
  47.   return name;
  48. }
  49. public void setName(String name) {
  50.   this.name = name;
  51. }
  52. public int getAge() {
  53.   return age;
  54. }
  55. public void setAge(int age) {
  56.   this.age = age;
  57. }
  58. public String toString(){
  59.   return "["+this.name+" "+this.age+"]";
  60. }
  61. }    怎么说 角标越界呢?</p>
复制代码

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1

查看全部评分

5 个回复

倒序浏览

                      demo=Class.forName("com.itheima.fans.persn");    //这里的persn---->person

回复 使用道具 举报
怎么说 角标越界呢?
应该是没有那么多构造函数:
验证一下:
Constructor cons[]=demo.getConstructors();
  system.out.println(cons.length);
应该小于4个

回复 使用道具 举报
武庆东 发表于 2012-10-27 23:30
怎么说 角标越界呢?
应该是没有那么多构造函数:
验证一下:

对了 对了  谢谢你  我大意了 以为自己写了 构造函数了  呵呵
回复 使用道具 举报
武庆东 发表于 2012-10-27 23:27
demo=Class.forName("com.itheima.fans.persn");    //这里的persn---->person

...

恩 这里我是该过来了的   不过还是得谢谢你  呵呵 楼下说中了 呵呵
回复 使用道具 举报
张学东 发表于 2012-10-27 23:39
恩 这里我是该过来了的   不过还是得谢谢你  呵呵 楼下说中了 呵呵

不好意思 没看到你们是一个人  哈哈哈啊  2 了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马