在java中演示包名称冲突

时间:2010-10-08 20:20:28

标签: java packages

我将此问题作为一项任务:

  

软件包/命名

     

我们已经创建了很多包,并在其中定义了类和接口。我们还讨论了在命名它们时我们必须记住的要点。在这项任务中,我们将看到命名的重要性。

     

请更改先前作业中的包名称,以便两个包具有相同的名称并分析将抛出的结果/错误。

我怀疑:

我无法想出一种方式(场景)来展示所询问的内容。 由于Java导入是绝对的,因此所描述的情况似乎无法生成(IMO)。

请帮我演示这件事。

提前致谢:)

2 个答案:

答案 0 :(得分:4)

是的,如果更改包名称,您还需要更改导入。如果您碰巧使用Eclipse,那么有一种简单的方法可以做到这一点。在Package Explorer视图中,右键单击该包并执行Refactor-> Rename。它将重命名包并更新其他类中的所有相关导入。

以下是它的工作原理:

JavaProjectA
   src
     com.some.package
         ClassA
JavaProjectB
   src
     com.another.package
         ClassA

到目前为止很好。由于其包结构,每个类都是唯一的。但是,它可以创建这个:

JavaProjectA
   src
     com.some.package
         ClassA
JavaProjectB
   src
     com.some.package
         ClassA

只有其中一个ClassA类将在jar中导出并在运行时使用。

答案 1 :(得分:3)

这在很大程度上取决于您正在运行的代码。

导致包名冲突的唯一方法是在类路径上放置两个包含同一包中的类的独立jar。如果没有类名冲突,那么就没有冲突。如果某些类名称发生冲突,那么JVM将尝试从类路径中较早出现的jar加载它们。当某些类仅在后面的jar中时,将发生错误,并且后面的jar中的类使用其名称也在早期jar中使用的类。错误的性质取决于使用的类型。

(我应该澄清这个答案适用于 Pure Java ,并且与任何特定IDE或构建系统如何为项目生成jar无关。)