我现在有一类,假设名为Class1,这个类当中定义了TextArea ta1 = new TextArea(4,3);
如果我在这个类当中使用
String s = "hello";
ta1.append(s);
则可以实现文本追加的功能.问题:
我现在有另外一个类假设名为Class2,
我已声明 Class1 c1;
String s = "world";
当我使用c1.append(s);
时报空指针错误!不知道是什么原因,还请多指教一下!

解决方案 »

  1.   

    你虽然声明了Class1 c1;但是你没有为c1分配空间(内存地址)。当然会空指针了!
    new Class1();
      

  2.   

    Class1 c1;这个语句你只不过是创建了一个Class的对象而已,也就是说c1是一个对象,他并不是一个文本区,也就是和
    TextArea并没有直接的联系,
    如果你真要想使用append(s);方法的话,那你就要写成c1.tal.append(s);
    当然要首先 c1=new Class1();
      

  3.   

    首先谢谢各位的解答!
    但是还有一个疑问!
    首先我的Class1是一个带主方法的类,也就是含有main()方法
    如果我再在Class2中去new Class1那不是会出问题吗?
      

  4.   

    更改一下我的提问当中的一个小问题
    当我使用c1.append(s); 
    这里应该是c1.ta1.append(s);尽管如此还是报空指针错!
      

  5.   

    你还想要什么样的回答啊 
    大家不是给你说的很清楚了吗
    1---6楼都告诉你了 你没有用NEW来创建对象啊
    JAVA不想C++
    你必须用NEW 来创建对象,如Class1 c1 = new Class1();
    按你的写法他会执行Class1 c1 = null;
      

  6.   


    应该会吧,没这么写过程序
    首先,你这么做是不对的,MIAN()最好放在一个单独的类中,如:class Mian{
    public static void main(String[] arg){
      //your code
    }
    }
      

  7.   

    对啊,是会出问题的。
    首先明确使用一个对像要先new 才行,
    其次,把main()放在主类里,一般不要再去new 这个类了。
    如果需要new class1(),那你就把里面的main()另外换个主类里放吧。
    让class1当个普通的类。
      

  8.   

    问题解决了!
    解决方法如下:我将Class1 当中的ta1做为一个参数传到Class2当中,再在Class2当中声明一个TextArea ta1;
    然后 this.ta1 = ta1;
    这样我就可以直接调用ta1.append(s)的方法了!上面很多朋友所说的需要new Class1()其实是有一些问题的,因为当我重新new 了一个之后那么我的TextArea ta1是一个新的了,就不是我原先的那个,所以 我无法对其进行操作,而新new出来的那个ta1由于没有实例化,自然会报空指针错误!呵呵!相互学习学习!
    谢谢各位!