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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 地狱天堂 于 2014-8-23 11:29 编辑

反射中创建类的实例. 打印输出,为什么在Person类中定义的toString()方法就会报错??
  1. <p><p>public class Person {
  2. private String name;
  3. private int age;
  4. public Person(){
  5.   System.out.println("Person run");
  6. }
  7. public Person(String name,int age){
  8.   this.name=name;
  9.   this.age=age;
  10. }</p><p>public String toString() {
  11.   return "name:"+name.toString()+",age:"+age;
  12. }

  13. public void show(String name,int age){
  14.   System.out.println("show run..name="+name+",age="+age);
  15. }

  16. public static void staticShow(){
  17.   System.out.println("static show run");
  18. }
  19. }
  20. </p></p>
复制代码
  1. <p>
  2. public class Reflect_GetClassDemo {
  3. public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
  4.   getClass_3();
  5. }
  6. public static void getClass_3() throws ClassNotFoundException, InstantiationException, IllegalAccessException {
  7.   String className="review11Reflect.Person";
  8.   Class clazz=Class.forName(className);
  9.   System.out.println(clazz);  
  10.   Object obj=clazz.newInstance();
  11.   System.out.println(obj);  
  12.   
  13. }



  14. }
  15. 报错信息:</p><p>Exception in thread "main" java.lang.NullPointerException
  16. at review11Reflect.Person.toString(Person.java:15)
  17. at java.lang.String.valueOf(Unknown Source)
  18. at java.io.PrintStream.println(Unknown Source)
  19. at review11Reflect.Reflect_GetClassDemo.getClass_3(Reflect_GetClassDemo.java:28)
  20. at review11Reflect.Reflect_GetClassDemo.main(Reflect_GetClassDemo.java:20)</p><p> </p>
复制代码

2 个回复

倒序浏览
  1. return "name:"+name.toString()+",age:"+age;
复制代码

你的Person类中,name并没有初始化,默认的是null,你覆写的toString中,调用的name的toString方法,所以会报空指针。
回复 使用道具 举报
hejinzhong 发表于 2014-8-23 08:04
你的Person类中,name并没有初始化,默认的是null,你覆写的toString中,调用的name的toString方法,所以 ...

明白了,非常感谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马