当前位置: 首页 > 面试题库 >

平台模块之间是否允许循环?

皇甫飞光
2023-03-14
问题内容

这是模块的模块声明java.rmi

module java.rmi {
    requires java.base;
    requires java.logging;

    exports java.rmi.activation;
    exports com.sun.rmi.rmid to java.base; // <-- cycle
    ...
}

因此,java.rmi和之间存在循环依赖关系java.base,对吗?平台模块之间是否允许循环?


问题答案:

模块系统禁止使用requires子句静态声明循环。对于平台和应用程序模块,这是正确的,并且您给出的示例不违反该规则。

不过,Requires子句只是模块图中可读性优势的一种来源。其他是命令行标志,反射,,requires transitive我敢肯定还有更多。添加所有这些可能会导致模块图中的循环,并且这是不被禁止的。

在您的具体示例中,仅当 java.base 读取 java.rmi 时才创建该循环,如果对 java.rmi中的
类使用反射会发生这种情况com.sun.rmi.rmid



 类似资料:
  • 我想知道我如何连接我的移动的flutter应用程序到运行在我的PC上的本地围棋服务器。 我的服务器正在http://192.168.29.45:4001上运行,但它没有连接到它。

  • 我有两个相互链接的JSON模式:schema.task.JSON和schema.dependency.JSON: 我使用的是Visual Studio 2013,Update 5,模式http://json-schema.org/draft-04/schema 有人知道创建具有跨文件循环依赖关系的JSON模式的正确方法吗?

  • 最近,我无意中编写了如下C代码: 仔细阅读代码,我发现了这个“错误”。然而,在运行时,它没有引起任何问题。明确地说,我的代码是用相对较新版本的MinGW-w64编译的,以创建本机Win32二进制文件。 当然,代码可以工作,但我很惊讶这是允许的,更奇怪的是,我的GCC-ish编译器没有抱怨它!(这个错误有GCC警告选项吗?) 有人能解释为什么这是允许的,以及为什么内部和外部变量不冲突/中断吗?理想情

  • 我有一个正则表达式,允许一个大小写,一个小写,8-16个字符和大多数特殊字符,包括空间。我想在正则表达式中添加允许空间。 我曾经尝试过: > 正则表达式中的空格 Regex允许字母数字、空格和一些特殊字符 Java空间和换行正则表达式 我的正则表达式如下: 我只想在这里加一点空间。我试过和

  • 我正在寻找一个,它可以防止特殊字符,并且只允许字母、数字、破折号(-)、下划线(_)和空格。 这个正则表达式工作得很好,但是它不允许单词之间有空格。 例如,如果输入,我得到我定义的自定义错误。我如何调整这个注册,除了字母,数字,破折号和下划线之外,还允许单词之间的空间。