1

構文エラーがあり、修正方法がわかりません。setName()コードは私には正しいように見えますが、Eclipseは、メソッドとメソッドで「コンストラクター呼び出しはコンストラクターの最初のステートメントでなければならない」と言っています。setAge()

 public class KeywordThis {


    private String name;
    private int age;

    public KeywordThis(){

        this.name = "NULL";
        this.age = 0;

    }

    public KeywordThis(String s, int a){

        this.name = s;
        this.age = a;

    }

    public KeywordThis(String s){

        this.name = s;      
    }

    public KeywordThis(int a){

        this.age = a;

    }

    public int setAge(int a){

        this(a);
    }

    public String setName(String s){

        this(s);
    }






    public static void main(String args[] ){








    }


}
4

4 に答える 4

5

インスタンスメソッドからそのようなコンストラクタを呼び出すことはできません。セッターには、新しいオブジェクトを作成するのではなく、既に持っているオブジェクトの値を変更する必要があります。私はあなたがこれをするつもりだと思います:

public void setAge(int a){

    this.age = a;
}

public void setName(String s){

    this.name = s;
}

また、セッターは通常値を返さないため、void型を返すように変更しました。

于 2012-07-22T23:38:11.933 に答える
1

オブジェクトが作成されると、コンストラクターを手動で呼び出すことはできません。コンストラクターは、別のコンストラクター内でのみ呼び出すことができます。

他の人が指摘しているように、それは次のようになります。

public void setAge(int a) {
    this.a = a;
}
于 2012-07-22T23:38:41.350 に答える
0

注として、セッターは次のようになります。

public void setAge(a) {
   this.a = a;
}

新しいオブジェクトを作成しません。これを行わないと、どこにでもあるJavaの慣習に違反することになります。

セッターで新しいインスタンスを作成したい場合は、次のようにします。

public KeywordThis setAge(a){
   return new KeywordThis(a);
}

使用しないでthis(a)ください。試行中の使用thisは、コンストラクターでのみ実行する必要があります(同じクラスの別のコンストラクターを呼び出すため)。

于 2012-07-22T23:37:56.383 に答える
0

パブリッククラスKeywordThis{

private String name;
private int age;

public KeywordThis(){

    this.name = "NULL";
    this.age = 0;

}

public KeywordThis(String s, int a){

    this.name = s;
    this.age = a;

}

public KeywordThis(String s){

    this.name = s;      
}

public KeywordThis(int a){

    this.age = a;

}

public int setAge(int a){

    this(a);
    int b=a;
    return b;
}

public String setName(String s){

    this(s);
    String s1=s;
    return s; 
}






public static void main(String args[] ){

   KeywordThis ob1=new Keyword();
   ob1.setAge(20);
   ob1.setName("sandy");

}


}

java共有|編集

于 2013-02-28T03:50:44.907 に答える