繁体   English   中英

在java中演示包名称冲突

[英]Demonstrating package names collision in java

我把这个问题作为一项任务:

软件包/命名

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

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

我怀疑:

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

请帮我演示一下这个东西。

提前致谢 :)

是的,如果您更改包名称,您还需要更改导入。 如果您碰巧使用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中导出并在运行时使用。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM