如何将带有模块的项目导入另一个项目,而又不丢失封装?

我正在尝试构建一个小型天气客户端API,该API可从某些网站获取一些天气。这样,我想为我的项目提供一个入口(称为WeatherClient)。

我将项目分为不同的包(为简单起见,我有2个包,一个“外部”包和一个“内部”包)。

我只希望将WeatherClient放在外部软件包中,而在内部软件包中有一个公共类(WeatherClientBuilderImplpublic builder())。

我想要实现的是在导入项目时隐藏WeatherClientBuilderImpl。从我对模块的阅读中看来,这似乎正是它们的主要优点之一,但可悲的是我一直无法找到有关如何实现这一目标的任何信息

我尝试了一些操作:

  1. 我尝试创建2个模块:内部模块和外部模块。我试图仅导入内部.jar(其pom包括模块的依赖项)-我在这里面临的主要问题是在运行时获取ClassnotFound异常。

  2. 我尝试创建1个模块,并且仅导出外部软件包。这是行不通的(我猜是因为“导出”导出模块而不是软件包)。在这里,我最终能够实现任何类,这违背了我的目的。

这是我当前的树,或多或少是我想要的树(我通过将WeatherClient放在“外部”包中,然后创建2个模块(一个用于外部,一个用于内部)来尝试对模块做一些事情)。

.
|-- WeatherClient.java
|-- internal
|   |-- DarkKey.java
|   |-- DarkSkyClient.java
|   |-- InvalidParametersException.java
|   |-- WeatherBuilderImpl.java
|   `-- handlers
|       |-- JsonBodyHandler.java
|       `-- JsonBodyHandlerTwo.java
`-- model
    |-- DateTimeFormatException.java
    |-- DateValidator.java
    `-- WeatherRequest.java

很明显,我要实现的目标是将该项目导入一个单独的项目中,这样只能通过使用WeatherClient类创建客户端。

yaoliaaa 回答:如何将带有模块的项目导入另一个项目,而又不丢失封装?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3167894.html

大家都在问