Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven/Java从可选模块获取常量_Java_Maven - Fatal编程技术网

Maven/Java从可选模块获取常量

Maven/Java从可选模块获取常量,java,maven,Java,Maven,这将是一个理论多于实际的问题,但我有一个使用maven的swing应用程序。它根据我通过maven配置文件加载的模块显示各种面板(屏幕) 可以将其视为一个主swing程序,根据构建的maven概要文件,它包含对第二个模块的依赖,可以是ModuleA或ModuleB 为了简化上下文,请将主swing程序想象为一个页眉、一个侧边栏和一个中间面板为空的页脚。中央面板充满来自辅助模块的“屏幕”,并根据通过配置文件内置的模块更改显示的屏幕 主swing程序在标题中有一个屏幕标题标签,但主屏幕标题标签因加载

这将是一个理论多于实际的问题,但我有一个使用maven的swing应用程序。它根据我通过maven配置文件加载的模块显示各种面板(屏幕)

可以将其视为一个主swing程序,根据构建的maven概要文件,它包含对第二个模块的依赖,可以是ModuleA或ModuleB

为了简化上下文,请将主swing程序想象为一个页眉、一个侧边栏和一个中间面板为空的页脚。中央面板充满来自辅助模块的“屏幕”,并根据通过配置文件内置的模块更改显示的屏幕


主swing程序在标题中有一个屏幕标题标签,但主屏幕标题标签因加载的辅助模块而异。如果我在包含文本的每个辅助模块中都有一个常量文件,我如何在不将主程序绑定到任何一个模块的情况下访问该模块

使用继承。使ModuleA和ModuleB共享相同的祖先

public abstract class AbstractModule{
    public abstract String getTitle();
}

public class ModuleA extends AbstractModule{
    @Override
    public String getTitle(){
        return "I am module A";
    }
}

在主程序中使用AbstractModule,它可以是ModuleA或ModuleB

我在考虑这个问题,但是如何从主程序访问它呢?因为主程序将包含抽象类,而ModuleA/ModuleB将包含扩展。主类是否能够调用新的AbstractModule.getTitle()并获取正确的数据?我这样问是因为主程序如果没有依赖项将其绑定到ModuleA,就无法引用“newmodulea”。不,您不能实例化抽象类。我认为你已经解决了创建不同实例的问题,如果你只是对标题感兴趣的话。你现在觉得怎么样?在不同的模块中有两个具有相同包和类名的实现?现在,我们在主类中有一个类GenericConstants,每个模块都有一个ModuleActConstants extends GenericConstants。标题当前直接存储在GenericConstants类中,并从该类访问。我想在特定模块中移动它们,因为它们与主类无关。此外,我们还有一个糟糕的体系结构,它基于硬编码的类名构建一个映射,以从主模块定位模块中的各个屏幕。期待改进。我可能会把你的想法带到那里,在每个模块a和模块B中创建一个具有相同包的主屏幕类。我将把这些常量放在那个类中。应使用硬编码的“package.classname”进行引用。非常感谢。如果你在主要答案中包含这些信息,我会接受。