1

私は次の問題を抱えています:

メソッド呼び出しでパラメーターとしてポインターを使用すると、「エラー:識別子が必要です」というエラーが発生します。

これは私のコードです:

class Data {
    Person a = new Person("John");
    Person b = new Person("Mary");

    a.willHug(b);       // Gets error: <identifier> at this line
}

class Person {
    private String name;
    private Person hugs;

    Person(String n){
        this.name = n;
    }

    public void willHug(Person p) {
        hugs = p;
    }    
}
4

6 に答える 6

5

このコードを実行するには、このコードをメソッド内に配置する必要があります。

たとえば、mainメソッドは次のとおりです。

class Data {

    public static void main(String args[]){
         Person a = new Person("John");
         Person b = new Person("Mary");

         a.willHug(b);       // Gets error: <identifier> at this line

    }
}

Javaでパラメータがどのように渡されるかをよりよく理解するには、SOに関するこの質問を読む必要があると思います。

それが役に立てば幸い。

于 2013-01-18T16:47:38.487 に答える
2

a上の操作を、クラスメソッド、main()メソッド、またはおそらくコンストラクターのいずれかのメソッドで囲む必要があります。

class Data {
    Person a = new Person("John");
    Person b = new Person("Mary");

    public Data() {
        a.willHug(b);
    }
}
于 2013-01-18T16:47:38.173 に答える
2

コードをmainメソッドに入れる必要があります。

public static void main (String[] args) {

    Person a = new Person("John");
    Person b = new Person("Mary");

    a.willHug(b);
}

また、Javaでは、これらのポインターを単なる変数とは呼びません。変数には、特定のオブジェクトインスタンスまたはプリミティブ値への参照があります。

于 2013-01-18T16:48:00.840 に答える
1

Dataクラス定義内のメソッドを呼び出していますか?これは正しくありません。これを行うには「main」が必要であるか、別のメソッドに配置する必要があります。

于 2013-01-18T16:47:54.360 に答える
1

そこにメソッドがありません(foo()という名前のメソッドを導入しました):

class Data {
    Person a = new Person("John");
    Person b = new Person("Mary");

    public void foo() {
        a.willHug(b);       // Gets error: <identifier> at this line
    }
}

class Person {
    private String name;
    private Person hugs;

    Person(String n){
        this.name = n;
    }

    public void willHug(Person p) {
        hugs = p;
    }    
 }
于 2013-01-18T16:48:03.783 に答える
1

問題は、ポインタ(Javaでは参照と呼ばれる)を使用しているためではなく、次の行が原因です。

a.willHug(b);

方法の範囲外です。その場所には、宣言または初期化ブロック({})のみを含めることができます。

于 2013-01-18T16:48:08.697 に答える