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