当前位置: 首页 > 面试题库 >

在Java中演示包名称冲突

鲜于阳成
2023-03-14
问题内容

我将这个问题作为作业:

包装/命名

我们创建了很多程序包,并在其中定义了类和接口。我们还讨论了命名它们时必须记住的要点。在本次作业中,我们将了解命名的重要性。

请更改上一个作业中的程序包名称,以使两个程序包具有相同的名称,并分析将引发的结果/错误。

我的怀疑:

我无法想到一种方法(场景)来证明所要求的内容。由于Java导入是绝对的,因此所描述的情况似乎不可能产生(IMO)。

请帮我示范一下。

提前致谢 :)


问题答案:

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

引起程序包名称冲突的唯一方法是将两个单独的jar放在类路径中,这两个jar都包含同一程序包中的类。如果没有任何类名冲突,则不存在冲突。如果某些类名确实存在冲突,则JVM将尝试从类路径中较早出现的jar中加载它们。当某些类仅在更高版本的jar中,并且更高版本的jar中的类使用其名称也在早期版本的jar中使用的类时,将发生错误。错误的性质取决于使用类型。

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



 类似资料:
  • 问题内容: 我正在使用两个具有相同名称的python软件包。 http://www.alembic.io/updates.html https://pypi.python.org/pypi/alembic 是否有规范或Python方式处理名称冲突的两个软件包的安装?到目前为止,我在开发/构建过程中仅偶尔需要一个软件包,因此我一直在使用单独的virtualenv来处理冲突,但是这使构建步骤变得更加复

  • 问题内容: 考虑以下jfiddle http://jsfiddle.net/bchapman26/9uUBU/29/ 我有2个模块(module1和module2)。module1和module2都定义了一个名为myService的服务。当两个模块都导入myApp时,这似乎在Angular中的myService上创建了名称冲突。看来AngularJs仅使用第二个服务定义,而没有警告您可能的问题。

  • 问题内容: 如果我有两个接口,它们的用途完全不同,但是具有相同的方法签名,那么我如何使一个类同时实现两个接口,而又不被迫编写一个同时为两个接口服务的方法并在该方法中编写一些复杂的逻辑是否实现检查调用的对象类型并调用适当代码的实现? 在C#中,这可以通过所谓的显式接口实现来克服。Java中有什么等效方法吗? 问题答案: 不,没有办法在Java的一个类中以两种不同的方式实现相同的方法。 这可能导致许多

  • 问题内容: 在我的Java应用程序中,我使用第三方库。 但是,我发现有些奇怪,有一些嵌套的程序包,有些类的名称可能与程序包的名称相同。 恐怕我不清楚。这是一个例子: 包 在“ com.xx.a”内部有一个名为“ a”的类。 因此,如果我想将此类称为“ a” … 我写: 然后,IDE将认为我的意思是软件包“ com.xx.a.a”。 那我就不能打电话了。 我想知道为什么? 顺便说一句,图书馆提供者似

  • 问题内容: 经常看到com。*软件包名称空间。“ com”是什么意思?谢谢。 问题答案: 包的命名约定在JLS中指定。这是相关的代码段(本节中还有很多内容): [JLS 7.7唯一程序包名称](http://java.sun.com/docs/books/jls/third_edition/html/packages.html#7.7) 您首先要拥有(或属于拥有)互联网域名的组织,从而形成唯一的软

  • 我有一个简单的枚举类,我想在其中有一个名为name的字段。 不幸的是,这在静态编程语言中似乎不起作用。编译失败,消息: 错误:(9,5)静态编程语言:冲突声明:枚举条目名称,公共最终val名称:字符串 同样的Enum类作为Java代码工作正常。如何用静态编程语言解决这个问题?