java - Java Getter Setter,传递私有(private)变量

标签 java getter-setter

我有以下城市类别

public class City {

    public static boolean walls[][];
    public static int width, height;
    public static Human people[];
    public static ArrayList<Zombie> zombies = new ArrayList<Zombie>();

创建了一张随机 map (墙壁用于定义建筑物,城市中有人居住,城市中创建了一个僵尸)。还有人类类和僵尸类

public class Human {
int x;
int y;
int d;

public Human(int x, int y, int d)
{
    this.x = x;
    this.y = y;
    this.d = d;
}

僵尸和人类都包含决定他们在 map 上移动的逻辑。因此,他们需要接近城市中的墙壁、人和僵尸才能导航。该程序运行良好,它们是静态的,但每当我创建一个新城市(以重置程序)时,它都会卡住,我认为这是因为静态变量。我尝试将它们设为私有(private),并在 City 中创建 getter 和 setter 方法,并从 Human 和 Zombie 中调用它们,但它总是说我不能以静态方式调用非静态方法。 示例如下:

public int peopleLength(){ //in City
    return people.length;
}

City.peopleLength() //in Human

可以让我知道我做错了什么或插入我朝正确的方向前进吗?提前致谢。

编辑:

if(StdDraw.isKeyPressed(32)){
world = new City(MAX_X,MAX_Y,80, 400);
}

因此,当按下空格键时, map 将被清除并重新绘制。有时它会工作 2 或 3 次,但大多数时候它只是黑屏并且不显示任何内容。

最佳答案

或者:

  • 将变量设为非静态和私有(private),然后为它们添加 getter 和 setter 方法,或者
  • 在 City 上添加一个名为 reset() 的静态方法,用于将变量重置为其初始状态

我会选择第一条路线。

关于java - Java Getter Setter,传递私有(private)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12991867/

相关文章:

Angular 2 setter 和 getter

java - If 语句不适用于 Getter 和 Setter 方法

函数中的 C++ const 参数

typescript - 私有(private)二传手 typescript ?

c++ - Getters 和 Setters C++

java - 为 double 创建哈希集

java - 通过对某些字段进行分组,将 java hashMap 转换为另一个 hashMap

java - 使用变量而不是长语句?

Java pojo - 迭代新数据集合后回收缓存的哈希表值

java - 在 Java 中减去两个日期