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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 欧德林 中级黑马   /  2012-6-13 13:33  /  1798 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package Test;
public class JavaBean {
public static void main(String[] args) throws Exception {
               
               
        Class<?> clazz = Class.forName("Test.Person"); //利用反射创建 实例
                Person p = (Person)clazz.newInstance();
/*问题就报在这里了。Exception in thread "main" java.lang.InstantiationException: Exam.Person
        at java.lang.Class.newInstance0(Unknown Source)
        at java.lang.Class.newInstance(Unknown Source)
        at Exam.JavaBean.main(JavaBean.java:24)           */

}
}
public class Person {
       
                private String name;
                public String getName() {
                        return name;
                }
                public void setName(String name) {
                        this.name = name;
                }
                public int getAge() {
                        return age;
                }
                public void setAge(int age) {
                        this.age = age;
                }
                private int age;
                public Person(String name, int age){
                        this.age=age;
                        this.name=name;
                }
               
        }

6 个回复

正序浏览

public class JavaBean {
        public static void main(String[] args) throws Exception {

                Class<?> clazz = Class.forName("Test.Person"); // 利用反射创建 实例

                Person p = (Person) clazz.newInstance();
                p.setName("Person类");
                System.out.println(p.name);
                 
        }

}




public class Person {
        public Person() {//添加个无参的构造函数

        }

        public String name;

        public String getName() {
                return name;
        }

        public void setName(String name) {
                this.name = name;
        }

        public int getAge() {
                return age;
        }

        public void setAge(int age) {
                this.age = age;
        }

        private int age;

        public Person(String name, int age) {
                this.age = age;
                this.name = name;
        }

}
回复 使用道具 举报
李海晓 发表于 2012-6-13 13:46
你可以不去掉啊,为什么非要去掉,加一个无参的就行了。
public person(){
}

thank you !搞定 了、
无参构造函数----原来这里一直没想明白。
回复 使用道具 举报
欧德林 发表于 2012-6-13 13:42
那我直接就把 public Person(String name, int age){
                        this.age=age;
           ...

你可以不去掉啊,为什么非要去掉,加一个无参的就行了。
public person(){
}
回复 使用道具 举报
  1. package Test;
  2. public class JavaBean {
  3. public static void main(String[] args) throws Exception {
  4.                
  5.                
  6.         Class<?> clazz = Class.forName("Test.Person"); //利用反射创建 实例
  7.                 Person p = (Person)clazz.newInstance();
  8. }
  9. }
  10. class Person {
  11.         
  12.                 private String name;
  13.                 public String getName() {
  14.                         return name;
  15.                 }
  16.                 public void setName(String name) {
  17.                         this.name = name;
  18.                 }
  19.                 public int getAge() {
  20.                         return age;
  21.                 }
  22.                 public void setAge(int age) {
  23.                         this.age = age;
  24.                 }
  25.                 private int age;
  26.                 public Person(String name, int age){
  27.                         this.age=age;
  28.                         this.name=name;
  29.                 }
  30.                 public Person(){
  31.                         System.out.println("无参构造函数初始化对象");
  32.                 }
  33.         }
复制代码
回复 使用道具 举报
李海晓 发表于 2012-6-13 13:36
Person p = (Person)clazz.newInstance(); 使用newInstance(); 方法实例化对象时,被实例化的类中必须有一 ...

那我直接就把 public Person(String name, int age){
                        this.age=age;
                        this.name=name;
                }
去掉?
这样编译是通过了。会不会造成什么影响呢
回复 使用道具 举报
Person p = (Person)clazz.newInstance(); 使用newInstance(); 方法实例化对象时,被实例化的类中必须有一个无参的构造方法,不然就不行,你应该往Person类中加一个无参构造方法

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马