Java:具有跨模块使用的打包类

时间:2015-06-08 15:08:17

标签: java

在我的项目(各种格式的解析器)中,我按功能打包了模块,但每个模块都需要一些类。

现在我不确定这里的最佳做法是什么:

  • 每个模块/包都应该有类的副本吗?无论如何,编译器可能会优化它,不是吗?
  • 创建“共享”包吗?这感觉不对......
  • 其他选择?

2 个答案:

答案 0 :(得分:0)

我建议你创建一个抽象类,并在每个类中单独提供实现,并将它们分开打包。

答案 1 :(得分:0)

我不会打包该类的重复项,这可能会导致一些无休止的麻烦,因为不同类加载器加载的相同类文件内容根本不被Java认为是同一个类,所以你将无法实现理解错误消息。如果你所有的jar都在同一个类加载器中,那么只会加载第一个类,所以你也可以把它放在一个地方。

我肯定会在自己的jar中打包实用程序类,并且与所有其他包有依赖关系,就像你可能使用的其他库一样。你甚至可以使用清单的classpath属性来轻松引用库