【问题标题】:How to make a method in a class, manipulate variables in another class?如何在一个类中创建一个方法,在另一个类中操作变量?
【发布时间】:2013-12-17 15:53:16
【问题描述】:

使用 Java 开发一个简单的井字游戏。

我有一个名为GameHelpers 的类。这个类应该包含对游戏有用的方法。游戏发生在另一个班级。

GameHelpers 中的方法是ResetGame()。此方法应该将所有 9 个按钮(井字游戏板)上的文本设置为空白,再次将它们设置为启用,并将变量设置为 1。

这是它的代码:

public class GameHelpers {

    public void resetGame(){
        for(int i=0;i<3;i++){
            for(int j=0;j<3;j++){
                buttons[i][j].setEnabled(true);
                buttons[i][j].setText("");
                count = 1;
            }
        }
    }

}

buttons[] 是游戏主类TicTacToe 中的一个 JButton 数组。

此方法以前在游戏的主类TicTacToe 中。但是现在它在不同的类中,它无法到达TicTacToe 类中的按钮并对其进行操作。

我在TicTacToe 中创建了get 和set 方法,但是如何从GameHelpers 激活它们?

如何使GameHelpers 中的方法起作用?

【问题讨论】:

  • 如果您只打算为 Windows 开发,我建议您使用C#。它在语法上与 java 非常相似;另外,从您的程序中获取可执行文件很简单。显然这是我的观点,但我认为C# 提供了很多I would love to see in Java 的东西。 C# 是我希望 Java 成为...
  • 当您已经有了一个已接受的答案时,为什么还要将您的问题编辑成一个全新的问题?现在这些答案毫无意义。
  • 编辑问题后答案不再适合您的问题..

标签: java class methods


【解决方案1】:

您可以参考Java to EXE - Why, When, When Not and How

缺点

磁盘占用空间。 Java 字节码专为紧凑性而设计,因此它比典型的 CPU 指令集具有更高的级别。 期望 AOT 编译器生成的可执行文件将是 2-4 比原来的 jar 文件大几倍。

动态应用程序。应用程序在运行时动态加载的类可能对应用程序不可用 开发商。这些可以是第三方插件、动态代理和 运行时生成的其他类等等。所以运行时系统 必须包含 Java 字节码解释器和/或 JIT 编译器。

此外,在一般情况下,只有由任一类加载的类 系统或应用程序类加载器可以预编译为本机代码。 因此,广泛使用自定义类加载器的应用程序可能只是 部分预编译。

特定于硬件的优化。 JIT 编译器与 AOT 编译器相比具有潜在优势,因为它可以选择代码生成 根据应用程序所在的实际硬件的模式 执行。例如,它可以使用 Intel MMX/SSE/SSE2 扩展来 加速浮点计算。 AOT 编译器必须要么 为最小公分母生成代码或将版本控制应用于 最占用 CPU 资源的方法,这会导致更大的代码大小 增加。

【讨论】:

    【解决方案2】:

    从个人经验来看,如果存在仅存在于 EXE 版本中的错误,您最终可能会花费大量时间来尝试追踪它并决定为用户提供其他版本更容易。

    在我看来,您确实在努力让您的用户整体上更轻松。我不知道你的预算是多少,但也许像install4j 这样的解决方案会更好。

    【讨论】:

      猜你喜欢
      • 2020-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-13
      • 1970-01-01
      • 1970-01-01
      • 2012-09-08
      • 2018-07-25
      相关资源
      最近更新 更多