在Java中如何避免类和包之间的名称冲突?
我有两个项目,在Java中如何避免类和包之间的名称冲突?,java,naming-conventions,package,classname,Java,Naming Conventions,Package,Classname,我有两个项目,Main和Core。我在packagecom.package.Sample中有一个名为com.package的包(以及它的内容)和一个名为Sample的类。如果我在Main中同时包含这两个类,我会遇到一个错误,其中一个无法解析-在我的实际情况中,无法解析的是Sample类。我们有构建的ant脚本,并且一直有效 然而,仔细检查每个项目需要什么,我注意到我可以将包com.package.Sample移动到Core以及Main中的依赖项中。Sample类在技术上属于Main内部,所以我没
Main
和Core
。我在packagecom.package.Sample
中有一个名为com.package
的包(以及它的内容)和一个名为Sample
的类。如果我在Main
中同时包含这两个类,我会遇到一个错误,其中一个无法解析-在我的实际情况中,无法解析的是Sample
类。我们有构建的ant脚本,并且一直有效
然而,仔细检查每个项目需要什么,我注意到我可以将包com.package.Sample
移动到Core
以及Main
中的依赖项中。Sample
类在技术上属于Main
内部,所以我没有移动它。这使我能够在Eclipse中成功构建
有几件事我很好奇:
- 这在大型项目中常见吗
- 对于这种情况,最好的方法是什么?在检查冲突之前,我认为最好的解决方案是重新考虑
类Sample
- 但是,如果无法将包
移出com.package.Sample
。我该怎么办?或者这是一个永远不会建立的案例Main
- 我不知道这在大型项目中是否常见,我想不会。如果代码库被设计成引起名称冲突(特别是在Java中,这使得解决类似问题变得容易),那么大型项目可能永远不会变大
- 如果名称具有适当的描述性,我不会重构示例类。然而,我会用所有小写字母来命名我的包(和子包)。你暗示这是一个小项目,所以我猜你可以控制命名。在我的记忆中,我从未见过在包名中使用任何大写字母的生产Java代码(商业或开源)。由于Java中的约定是使用Pascal case或camel case或任何您想调用的名称,因此如果遵循该约定,就永远不会有类/包名称冲突
- 当然,它会建立。很容易修复。因为您使用的是Eclipse,所以您应该能够在资源管理器中右键单击包,选择“重构”,将名称更改为小写,然后就基本完成了李>
祝你好运 包名应全部小写,类名应以大写开头。遵循此实践可确保不会出现您所描述的问题。我不知道包的命名约定,这很好。事实上,我的问题是类和包都是小写的,这似乎意味着类应该按照类命名约定进行重构。很好……只要它是固定的,并且你学到了一些东西,这就是胜利。