3

私はJavaを学んでいますが、他のクラスのgetメソッドとsetメソッドに問題があります。

私の最初のクラスは Department という名前で、2 番目のクラスは Company という名前です。クラス Department のスタッフ数を設定し、クラス Company のスタッフ数を取得したいと思います。

学科クラス

public class Department {

    public int staffNumber;

    public Department() {
    }

    public void setStaffNumber(int staff) {
        this.staffNumber= staff;
    }

}

カンパニークラス

public class Company {

     public Department staffNumber;

     public Company() {
     }

     public Department getStaffNumber() {
          return Department.staffNumber = Department.staffNumber;
     }

}

エラー メッセージ - 非静的変数 staffNumber は静的コンテキストから参照できません。ありがとうございました

4

4 に答える 4

3

問題はここにあります:

return Department.staffNumber = Department.staffNumber;

コンパイラは次のように読み取りDepartment.staffNumberます:staffNumberDepartmentクラス内の静的変数です。あなたの問題があります。

これを解決するには、インスタンス データを返すだけです。

public Department getStaffNumber() {
    //<Department attribute in the class>
    return staffNumber;
}

ちなみに、クラスDepartment.staffNumber内に static 属性を持っていても、提案された行は意味がありません。これは次のようになります。Departmentreturn Department.staffNumber = Department.staffNumber;

public class SomeClass {

    int x;

    public int getX() {
        //return x = x; //clumsy
        return x; //now this might be better
    }
}
于 2012-10-08T13:49:27.663 に答える
0
     public Department getStaffNumber() {
          return Department.staffNumber = Department.staffNumber;
     }

Department.staffNumber は静的変数のようにアクセスされます。である必要がありますreturn staffNumber

通常、ゲッターは初期化されません。返されるはずです。

部門を返したい場合は、次のようにする必要がありますreturn staffNumber

Department.staffNumber を返したい場合はstaffNumber.staffNumber、戻り値の型をint... に変更して戻り、変数名を修正する必要があります。

于 2012-10-08T13:50:16.577 に答える
0

変数 staffNumber はstatic variableであったため、アクセスしようとしています。

staffNumber を返したい場合は、staffNumber.staffNumber を返す必要があります。ただし、悪いセマンティクスを使用しています...次のものが必要です。

public class Company {

     public Department m_department;

     public Company() {
         m_department=new Department();
     }

     public Department getStaffNumber() {
          return m_department.staffNumber;
     }

}
于 2012-10-08T13:51:06.897 に答える
0

基本的な概念について混乱しているようです。以下をせよ

public class Department {

    public int staffNumber;

    public Department() {
    }

    public void setStaffNumber(int staff) {
        this.staffNumber= staff;
    }

    public int getStaffNumber() {
        return staffNumber;
    }
}

StaffNumberあなたのCompanyクラスで使用しています

public class Company {

    public Department dept;

    public Company() {
        dept= new Department();
    }

    public int getDepartmentStaffNumber() {
        return dept.getStaffNumber();
    }

    public void setDepartmentStaffNumber(int staff) {
        dept.setStaffNumber(staff)
    }
}
于 2012-10-08T13:54:42.553 に答える