Java - 赋值的左侧必须是变量

时间:2017-05-08 18:58:55

标签: java getter-setter

我试图制作一个将不同城市定位为我的第一个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; 
   }
}

(我希望将变量保留为私有)

这个班级' Citiy'应该有坐标:

class City {
  Gps where;

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

2 个答案:

答案 0 :(得分:2)

错误不言而喻:您无法为不是字段或变量的内容赋值。 Getter用于获取值存储在类中。 Java使用 setters 来处理存储值:

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

现在您可以通过调用setter来设置值:

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

答案 1 :(得分:2)

不要使用getter设置属性。应该这样做:

prev