繁体   English   中英

在Java中的类之间传递变量

[英]Passing variables between classes in Java

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

这是GameOfLife.java ,我在其中设置了toRepaint

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

这是我需要在Grid.java访问该变量的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类实现该接口

并覆盖类似的方法

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

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

为此,您必须使要在另一个类中访问的变量成为公共类变量(也称为字段):

public class GameOfLife{
    public static String toRepaint;

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

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

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

然而

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

public static String getToRepaint(){
    return toRepaint;
}

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

private static String toRepaint;

在我们的Grid类中,我们改为调用访问toRepaint变量的方法:

    String rep = GameOfLife.getToRepaint();

这是面向对象编程的核心,尽管它似乎是多余的,但在以后可能会非常有用,并且有助于使代码更加整洁。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM