4

我在大学环境中教授 Java 编程课程。在课程中使用最新的 LTS 版本(Java 11)是有意义的。我们使用 JavaFX 教授用户界面。然而,JavaFX 加上模块系统的组合会产生复杂性,尤其是对于初学者而言。

为了使用 JavaFX,必须有一个module-info.java看起来像这样的文件:

module MyProject {
    // JavaFX must be able to start the application
    exports myPackage to javafx.graphics;

    // JavaFX modules that we require
    requires javafx.base;
    requires javafx.controls;
    requires javafx.graphics;
}

学生通常为每门课程使用一个 Java 项目。在每门课程中,他们都会从我这里得到很多例子,并且会自己编写更多的程序。这些示例和练习中的每一个都有自己的主类,并且它们被组织成许多不同的包。

问题在于第一条exports语句:据我所知,每条语句仅适用于单个包,不能使用通配符,也不包括子包。因此,如果我们有一个包含 50 个不同包的 Java 项目,module-info.java将包含 50个exports语句。这是一团糟。

也许这看起来微不足道,但对于刚学习编程的人来说,这又是一个障碍。我是否忽略了一些概括exports以涵盖多个包的方法?或者,是否有人对如何为我的学生简化此问题提出了很好的建议?

4

1 回答 1

0

不确定这是否有帮助,但我在 Github 中启动了一个模块项目。由于您的问题没有得到回答,我会问您是否找到了这样做的好方法。

我的设置在 Github。纯 Java,带有 GitHub 操作来帮助创建罐子。

https://github.com/disparter/java-snippets

由于我只使用一个存储库,因此即使与许多模块共享也很容易。我通常使用 Discord 进行讨论,并将一些相关内容放入开发说明文件中,但它是葡萄牙语的。

就我而言,我做两件事。

  1. 创建一个简单的片段来演示一些参数。
  2. 创建一个简单的模块来演示是否有任何好的面向对象实践。

OBS

在 Java 模块中思考小块。如果您想处理更大的项目,最好使用 Gradle 或 Maven。当依赖问题发生时,它以教育的方式很有趣。如果你觉得要导入的模块太多,可以创建一个模块,作为Layer来帮助导入常用的东西。

于 2021-04-08T13:04:32.533 回答