java - 如何从现有对象的类外部调用该对象的函数?

标签 java

我正在修改一些现有的 Java 代码以进行分配,但我不知道如何从 ActionListener 中调用现有对象的函数。

“myGame”只会有一个实例。

这是相关代码;

public class myGame extends JFrame { 
    public myGame() { 
        //...snip...

        statsBar = new JLabel(""); 
        add(statsBar, BorderLayout.SOUTH); 

        add(new Board(statsBar)); 

        setResizable(false); 
        setVisible(true);

        addMenubar();
    } 

    private void addMenubar() {
        JMenuBar menubar = new JMenuBar();
        JMenu topMnuGame = new JMenu("File");
        JMenuItem mnuSolve = new JMenuItem("Solve");
        mnuSolve.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event) {

              // freshGame.solveGame();
              // this is where I need to call the solveGame function
              // for the "freshGame" instance.
              solveGame();

            }
        });
        topMnuGame.add(mnuSolve);
        menubar.add(topMnuGame);
}
    public static void main(String[] args) { 

      myGame freshGame = new myGame();

    }

}

.

public class Board extends JPanel { 

public Board(JLabel statsBar) {
    this.statsBar = statsBar; 

    //..snip..

    addMouseListener( new gameAdapter() ); 
}

    public void solveGame() {
    // .. do stuff with object ..
    }

}

所以我的问题是,如何使用“freshGame”实例从“myGame”类中调用“solveGame()”?

最佳答案

简短的通用答案:

在 Java 中,如果有一个对象,例如也称为类的实例

MyClass myObj = new MyClass();

然后您可以像这样访问该对象的类的非静态成员:

myObj.myMethod();

无论您要在何处调用方法,都需要 a reference到正确的对象,因此将其作为参数传递给需要它的方法:

class OtherClass {
    // snip constructors etc
    public void otherMethod(MyClass obj) {
        obj.myMethod();
    }
}

或者,将其作为构造函数参数传递并将其存储在私有(private)成员变量中,以便稍后从方法中调用它。

class SomeClass {

    private final MyClass someMyClass;

    SomeClass(MyClass someMyClass) {
        this.someMyClass = someMyClass;
    }

    public void someMethod() {
        this.someMyClass.myMethod();
    }
}

关于java - 如何从现有对象的类外部调用该对象的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19532554/

相关文章:

java - 在 Java 中将 SQL 解析为数组

java - 如何捕获从 Java (tomcat) 发送到 Oracle DB 的查询?

java - 用 Java 实现中断服务例程

java - ServletException 打开我的应用程序时

java - 数组在代码的一部分中省略行,但在另一部分中显示它

java - Android 线程上的 fragment 替换(...)

Java PBEWITHSHA1ANDDESEDE 加密在 Node.js 中等效吗?

Java Android 动态更改 ImageView 的位置

java - 使用资源构建java库

java - 简单的 Android 应用程序 - 在智能手机上运行时出现内存不足错误