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

前端之家收集整理的这篇文章主要介绍了java – 平台模块之间是否允许循环?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这是 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之间有一个循环的依赖关系,对吧?周期允许在platform modules之间?

解决方法

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

但是,Requires子句只是模块图形中可读性边缘的一个来源.其他都是命令行标志,反射,需要传递,我相信还有更多.添加所有这些可能会导致模块图中的循环,并且不会被禁止.

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

猜你在找的Java相关文章