代码之家  ›  专栏  ›  技术社区  ›  Niraj Sonawane

在Java 9中,requires public和requires transitive的区别是什么

  •  3
  • Niraj Sonawane  · 技术社区  · 7 年前

    我了解到,为了使用任何其他导出的模块,我们需要将该模块指定为 requires :

    module mymodule{
           requires othermodule.xyz;
    }
    

    什么时候 othermodule 在上使用 thirdmodule mymodule 也需要这样, 其他模块 应该这样定义可传递依赖项:

    module othermodule {
           requires transitive thirdmodule  
    }
    

    然而,我看到许多网站使用 public 此情况的关键字:

    module othermodule {
           requires public  thirdmodule  
    }
    

    这两种形式有什么不同;即 requires public requires transitive ?

    1 回复  |  直到 7 年前
        1
  •  6
  •   Naman    6 年前

    这个 requires public 是在Java 9发布之前修订的模块子语言早期版本的一部分。根据Java 9 JLS public 关键字不允许出现在 模块直接 :请参阅 JLS 7.7 .

    使用 需要公开 语法过时/不正确。这在以下方面得到认可,例如:

    大体上 需要公开 语法过时(现在无效),并且 requires transitive 是它的替代品。