-3
## Class B ##
    public class ClassB{

    public ClassB() {
    }

    public String getAddress() {
        return "Address";
    }
      }

## Class A ##
    public class ClassA{
    private ClassB classb;

    public ClassA() {
    }

    public void setClassb(ClassB classb) {
    this.classb = classb;
}
    public void getAddress() {
         System.out.println(classb.getAddress());
    }
      }

## Main Class ##
        public class MainClass{

    public static void main(String[] args){
        ClassA classa = new ClassA();
        classa.getAddress();
    }}


----------

このプログラムを実行すると、nullpointer 例外が返されます。誰かが Nullpointer 例外の理由を説明してくれませんか? ありがとうございました。セッターメソッドを使用しようとしましたが、それでも nullpointer 例外をスローします

4

6 に答える 6

0

ClassA では、ClassB は初期化されていません

プライベート ClassB classb = new ClassB();

http://www.artima.com/designtechniques/initializationP.htmlをご覧ください

于 2013-06-20T07:31:26.193 に答える
0

他の人が言ったように、それはclassbメンバーclassaが初期化されていないためです。これを修正するには、ClassA オブジェクトを初期化するときに初期化するか、ClassB の getAddress() メソッドから静的な値を返すため、ClassB の getAddress() メソッドを静的にし、ClassB オブジェクトを初期化しないようにします。 ClassA の getAddress() メソッドから ClassB の getAddress() メソッドを静的に参照します。

例:

// Class B
public class ClassB
{
    public ClassB()
    {
    }

    public static String getAddress()
    {
        return "Address";
    }
}


// Class A
public class ClassA
{
    public ClassA()
    {
    }

    public void getAddress()
    {
        System.out.println(ClassB.getAddress());
    }
}


// Main Class
public class MainClass
{
    public static void main(String[] args)
    {
        ClassA classa = new ClassA();
        classa.getAddress();
    }
}
于 2013-06-20T07:19:35.617 に答える