在 Java 中的 类 之间传递变量
Passing variables between classes in Java
我有两个独立的类:GameOfLife.java
和Grid.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
}
如何访问这个变量?
我的建议是:
- 定义接口:
public interface IGame{
String getName();
}
- 创建 GameOfLife class 以实现该接口
并覆盖
这样的方法
@Override
public String getName(){
return rep;
}
- 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();
这是面向对象编程的核心,虽然看起来多余,但在以后会很有帮助,并且有助于使代码更整洁。
我有两个独立的类:GameOfLife.java
和Grid.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
}
如何访问这个变量?
我的建议是:
- 定义接口:
public interface IGame{
String getName();
}
- 创建 GameOfLife class 以实现该接口
并覆盖
这样的方法@Override
public String getName(){
return rep;
}
- 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();
这是面向对象编程的核心,虽然看起来多余,但在以后会很有帮助,并且有助于使代码更整洁。