【问题标题】:Accessing an Instance of a Variable form Another Class从另一个类访问变量的实例
【发布时间】:2018-03-19 14:49:25
【问题描述】:

我有一个 Java 项目,其中在一个类中初始化了一个数组,就像这样。

public class pixel {
    public boolean[] pixelAvailability = new boolean[100];
}

在我的主类中,我创建的另一个类的方法正在运行。该方法的代码如下所示。

public void walls() {
    for (int i = 1; i <= 10; i++) {
        // This is the part I need help with!
    }
}

此方法的预期用途是更改 pixelAvailability 数组中某些条目的值。在注释所在的空间中,应该有一行访问数组,并将具有相同值'i'的数组的索引更改为true。但是,我不确定我会在那里写什么,以更改像素类实例中存在的 pixelAvailability 数组的值,该实例不是在“墙”类本身中创建的。主类只是简单地创建了两个类的两个实例,并且是这样写的。

public class main {
    public static void main(String[] args) {
        pixel pixelObj = new pixel();
        wall wallObj = new wall();

        walls();
    }
}

虽然我可以在 main 方法中编写“walls”方法的代码,但它会占用大量空间并使其有点混乱,而且似乎没有必要。

有第四类与这个特定问题无关,但也会有访问 pixelAvailability 数组中的值的问题。非常感谢任何帮助或提示!

【问题讨论】:

  • 你需要在你的类之间创建一些依赖关系——例如让 walls 在其构造函数中接受 pixel 实例
  • 注意:因为i = 1 i &gt;= 10 总是假的。很可能您的意思是i &lt;= 10
  • 除非有理由在别处使用pixels,否则我会将其设为walls 对象的字段。

标签: java class variables


【解决方案1】:

您需要将 Pixel 对象作为参数传递,首先将您的 wall 方法更改为接收 Pixel 作为参数

public void walls(Pixel pixel) {
    for (int i = 1; i >= 10; i++) {
        // here you can do whatever you want like pixel.pixelAvailability[i] = false;

    }
}

然后在您的主要部分中,您将 Pixel 作为参数传递

public class main {
    public static void main(String[] args) {
        pixel pixelObj = new pixel();
        wall wallObj = new wall();

        walls(pixelObj); //here you do the magic
    }
}

基本上,您正在更改墙壁方法以接受 Pixel 实例作为参数。所以你可以在你的方法中访问它。

现在,无论何时调用 wall 方法,您都可以将任何 Pixel 对象传递给它。

更多信息,您可以查看此链接

https://docs.oracle.com/javase/tutorial/java/javaOO/methods.html

【讨论】:

  • 非常感谢!这正是我遇到的麻烦。不过,您能否解释一下,第一个示例中的第一行是做什么的? “(像素像素)”部分?
  • 我已经更新了答案,提供了更多详细信息以及更多信息的链接。
猜你喜欢
  • 2012-05-21
  • 2013-10-28
  • 1970-01-01
  • 2011-04-28
  • 1970-01-01
  • 2020-04-14
  • 2012-01-23
  • 2011-07-26
相关资源
最近更新 更多