1. ホーム
  2. java

[解決済み] Java - 代入の左辺は変数でなければならない

2022-02-05 20:58:35

質問

私は最初のJavaプロジェクトとして、異なる都市の位置を特定する小さなプログラムを作ろうとしています。

クラス「GPS」の変数にクラス「City」からアクセスしたいのですが、このようなエラーが出ます。代入の左辺は変数でなければなりません。どなたか、私がここで何を間違えているのか、また、今後このような間違いを避けるにはどうしたらよいかを説明してください。

public class Gps {
  private int x;
  private int y;
  private int z;

   public int getX() {
    return this.x; 
   }

   public int getY() {
    return this.y; 
   }

   public int getZ() {
    return this.z; 
   }
}

(変数をprivateのままにしておきたい)

そして、このクラス 'Citiy' は座標を持つ必要があります。

class City {
  Gps where;

   Location(int x, int y, int z) {
     where.getX() = x;
     where.getY() = y;    //The Error Here
     where.getZ() = z;
   }
}

解決方法は?

フィールドでも変数でもないものに値を代入することはできないのです。ゲッターは 取得 クラス内に格納されている値です。Javaでは セッター を使用して、値を保存し直します。

public int getX() {
    return x; 
}
public void setX(int x) {
    this.x = x;
}

これで、セッターを起動して値を設定することができるようになりました。

City(int x, int y, int z) {
    where.setX(x);
    ...
}

しかし、この解決策は理想的ではありません。 Gps 変幻自在 . コンストラクタを追加することで、イミュータブルに保つことができます。

public Gps(int x, int y, int z) {
    this.x = x;
    this.y = y;
    this.z = z;
}

現在 City 設定できる where を一発で決める。

City(int x, int y, int z) {
    where = new Gps(x, y, z);
}