2013-08-16 34 views
-1

接收新的價值,我有兩個類別:由兩個類的構造函數

public class ClassA { 

String NewName; 

public ClassA() { 
    System.out.println("new name in A constructor: " + NewName); 
} 

public static void main(String[] args) { 
    ClassA aM = new ClassA(); 
    aM.action(); 
    aM.displayNewName(); 
} 

public void displayNewName() { 
    System.out.println("new name in display method:" + getNewName()); 
} 

public void action() { 
    ClassB bA = new ClassB(); 
    System.out.println("new name in Action:" + getNewName()); 
} 

public String getNewName() { 
    return NewName; 
} 

public void setNewName(String newN) { 
    NewName = newN; 
    System.out.println("new name in A Set Method: " + getNewName()); 
} 
} 

而且:

​​

我不能在我的ClassA方法(如displayNewName()action方法得到jack

更新

public class ClassB { 

String newName = "jack"; 
ClassA a = new ClassA(); 

public ClassB(){ 
    a.setNewName(newName); 
} 
} 

輸出:

new name in A constructor: null 
new name in A constructor: null 
new name in A Set Method: jack 
new name in Action:null 
new name in display method:null 
+1

* 「我不能接受」 * <<請詳細說明(?錯誤,異常) – m0skit0

+0

@ m0skit0我收到'空指針異常'或'Null'值偶爾 – Sajad

+0

@ m0skit0查看更新代碼 – Sajad

回答

4

可變a未初始化。它會拋出nullpointerexception。 您需要通過添加以下行來在構造函數中初始化它:a = new ClassA();

EDIT1:

從我的理解,你需要做的是:

public class ClassB { 

String newName = "jack"; 

public ClassB(ClassA a){ 
    a.setNewName(newName); 
} 
} 

,然後在ClassB的,修改

public void action() { 
    ClassB bA = new ClassB(this); 
    System.out.println("new name in Action:" + getNewName()); 
} 
+0

好了,現在我收到此null' – Sajad

+0

見更新..... – Sajad

+0

@Sajjad再次檢查 – Ankit

1

一個未初始化動作() 。嘗試a = new ClassA();在構造函數中

+0

查看更新..... – Sajad

2

更改ClassB

public class ClassB { 

String newName = "jack"; 
ClassA a=new ClassA(); // Initialize a 

public ClassB(){ 
    a.setNewName(newName); 
} 
} 

編輯:

public void action() { 
     ClassB bA = new ClassB(); 
     System.out.println("new name in Action:" + bA.newName); 
    } 
+0

我在我的代碼中初始化了一個 – Sajad

+0

@Sajjad ok,然後它會按你的意願工作 –

+0

我想在'action()'或'display()'方法中看到'jack' – Sajad