0

AクラスとBクラスの2クラスあります。

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;
    }
}

クラス A 内のクラス B でこの関数「setName」にアクセスできないのはなぜですか? ありがとう。

4

3 に答える 3

1

Aそのコードをのコンストラクター内に配置する必要があります...

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

...そしてインスタンス化します。

A someA = new A();
于 2012-11-08T01:17:31.780 に答える
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();
于 2012-11-08T01:18:07.913 に答える
0
testB.setName("test");

はステートメントであり、コード ブロック内にある必要があります。現時点では、非宣言ステートメントが許可されていないクラス ブロックにあります。

したがって、このステートメントをコンストラクター、メソッド、または初期化ブロックに移動すると、問題が解決します。

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

   public A() {
     testB.setName("test");
   }
}
于 2012-11-08T01:17:28.057 に答える