是否可以更改运行时使用的包?

Is it possible to change the package being used at runtime?

我有一个大型应用程序,我正在努力扩展它以允许我组织内的其他部门自定义使用。

每个部门都有不同的需求,但可能会按原样共享一些相同的 class,但必须修改其他部分以满足部门的特定需求。

我想做的是为每个部门创建一个新包,并将相关的 classes 移动到这些包下,从而使它们分开,但都包含在同一个整体应用程序中。

现在,我的包结构是这样的:

[src]
    - Main.java
    [view]
        - D1 FXMLs
    [controllers]
        - D1 Controllers
    [model]
        -D1 Classes

我希望做的是重组项目以包括其他部门,其中许多使用与 D1(部门 1)相同的 class 名称。

[src]
    - Main.java
    [D1]
        [view]
            - D1 FXMLs
        [controllers]
            - D1 Controllers
        [model]
            -D1 Classes
    [D2]
        [view]
            - D2 FXMLs
        [controllers]
            - D2 Controllers
        [model]
            - D2 Classes
...etc

我需要 Main.java 根据 运行 时间的变量值来确定操作哪个包。

这甚至可能吗?还是我仍然需要为每个部门创建完全独立的项目并让 "Loader" 程序确定要 运行 哪个?

编辑: 也许我自己偶然发现了答案。让 Main.java 在 D1 或 D2 包中调用 class 并让 that class 正确分配包是否可行?

虽然可能不是最优雅的解决方案,但我使用了一种简单的方法(因为我的技能还没有达到我理解工厂的程度)。

我刚刚实施了我对问题建议的编辑,根据需要哪个包调用不同包的 RootLayoutController