在 Java 中的 类 之间传递变量

Passing variables between classes in Java

我有两个独立的类:GameOfLife.javaGrid.java,后者有一个paintComponent方法。在 GameOfLife.java 中,我有一个不断变化的变量 toRepaint,我需要在 Grid.java 中访问它。

这是 GameOfLife.java 的一部分,我在其中设置了 toRepaint:

if (an==0) {
    toRepaint = (String)c.getSelectedItem();
    System.out.println(toRepaint);
}
main.repaint();

这是我需要在 Grid.java 中访问该变量的地方:

public void paintComponent(Graphics ob) {
    super.paintComponent(ob);
    Graphics2D g1 = (Graphics2D) ob;
    String rep = ??? //This variable should equal the value of toRepaint
}

如何访问这个变量?

我的建议是:

  1. 定义接口:

public interface IGame{
    String getName();
}
  1. 创建 GameOfLife class 以实现该接口

并覆盖

这样的方法
@Override
public String getName(){
       return rep;
    }
  1. Grid.java 需要引用,要么在构造函数中传递它,要么使用 setters getters...

public void paintComponent(Graphics ob) {
    super.paintComponent(ob);
    Graphics2D g1 = (Graphics2D) ob;
    String rep = myInterface.getName();
}

为此,您必须在另一个 class 中将要访问的变量设为 public class 变量(也称为字段):

public class GameOfLife{
    public static String toRepaint;

    public void yourMethod() {
        //set value, do stuff here
    }
}

然后在 Grid.java 中,您使用点语法访问 class 变量:

public void paintComponent(Graphics ob) {
    super.paintComponent(ob);
    Graphics2D g1 = (Graphics2D) ob;
    String rep = GameOfLife.toRepaint;
}

然而

这不是最好的方法,但却是迄今为止最简单的方法。为了遵循面向对象的编程,我们将以下访问器方法添加到我们的 GameOfLife class:

public static String getToRepaint(){
    return toRepaint;
}

并将我们的变量声明更改为:

private static String toRepaint;

在我们的网格 class 中,我们改为调用访问 toRepaint 变量的方法:

    String rep = GameOfLife.getToRepaint();

这是面向对象编程的核心,虽然看起来多余,但在以后会很有帮助,并且有助于使代码更整洁。