gpt4 book ai didi

java - 通过 Java 包和 "project internal vs public"函数的访问修饰符组织项目

转载 作者:行者123 更新时间:2023-12-01 11:19:06 26 4
gpt4 key购买 nike

我正在开发一个最好由至少两个包组织的项目。例如,com.mycompany.core 和 com.mycompany.ui。 “core”包希望仅向“ui”包公开某些功能,而不将其公开给外界。

例如,我在“core”包中有一个 Point 类,其中允许我的“ui”包通过 Point 类的 movePoint(int dx, int dy) 方法移动点对我来说是有效的。然而,我不希望外界有能力通过这种方法修改一个点。

这可以在没有任何复杂代码的情况下干净地完成吗?我意识到 Java 没有 C++ 的“ friend ”语义,但我是否误解了 Java 的某些内容?

简而言之,即使我有两个 Java 中的“相关”包(“core”和“ui”),就 Java 而言,它们也可能是完整的彼此是陌生人吗?没有办法(没有复杂的代码)对“ui”包给予特殊对待,而不是简单地使用我的“core”和“ui”包的任何其他随机包?

谢谢。

最佳答案

基本上,没有。当前Java中的每个包都是完全独立的,a.b.c与a.b.d没有特殊关系。因此,如果 my.code.api 可以访问 my.code.internals,那么任何人都可以。

Java 9 通过 jigsaw 项目添加了一个称为模块的新构造来解决此问题。或者您可以使用 OSGI,它使用 bundle 来达到大致相同的效果。

关于java - 通过 Java 包和 "project internal vs public"函数的访问修饰符组织项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31463258/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com