2012-11-08 78 views
0

A類公共方法我有兩個類,A類和B類麻煩訪問來自B類

public class A { 
    B testB = new B(); 
    testB.setName("test"); //**Error Syntax error on token(s), misplaced constructs 
          //**(same line above) Error Syntax error on "test" 
} 

//in a separate file 
public class B { 
    public String name; 
    public void setName(String name){ 
     this.name = name; 
    } 
} 

我爲什麼不能在一個類中訪問該功能「的setName」 B類?謝謝。

+0

把這段代碼放入一個你在構造函數中調用的init函數中。 – Navneet

回答

1

您需要從另一個方法或構造函數中調用該函數。

public class A { 

     //Constructor 
     public A(){ 
     B testB = new B(); 
     testB.setName("test"); 
     } 

     //Method 
     public void setup(){ 

     B testB = new B(); 
     testB.setName("test"); 
     } 
    } 

    /*Then in a main method or some other class create an instance of A 
and call the setup method.*/ 

    A a = new A(); 
    a.setup(); 
+0

我一定很累,因爲出於某種原因,我無法意識到這個簡單的錯誤。謝謝,我會在讓我接受答案的時候。 – Nibirue

+0

很高興我可以幫忙,我們都在那裏保持堵塞。 –

0
testB.setName("test"); 

是一個語句,需要在代碼塊中。目前它在不允許使用非聲明性語句的類塊中。

所以提出這個statent成一個構造函數,方法或初始化塊將解決這個問題:

public class A { 
    B testB = new B(); // B can remain here 

    public A() { 
    testB.setName("test"); 
    } 
} 
1

你需要把這些代碼的A的構造函數中...

public A() { 
    B testB = new B(); 
    testB.setName("test"); 
} 

...然後實例化它。

A someA = new A(); 
+1

構造函數的簽名不應公開A(){} –

+0

@ kmb385我刪除了'void'。 – alex