首页 > 解决方案 > 如果 2 个类具有相同的包语句怎么办

问题描述

我遇到了一个问题,其中来自 2 个不同包(由同一组拥有)的 2 个类具有相同的名称和包语句

套餐一

package com.placeholder.constants.Constants

public class Constants{}

套餐二

package com.placeholder.constants.Constants

public class Constants{}

如果我正在处理包 1 但想在包 2 中引用这个常量类,这甚至可能吗?

标签: java

解决方案


不能在同一个包中重复类名

其中来自 2 个不同包的 2 个类

但它们不是两个不同的包。您为两者使用了相同的包名称。

想在包 2 中引用这个常量类

使用任一:

  • 不同的包名
  • 新班级的不同名称

出于显而易见的原因,您不能在同一个包中定义两个具有相同名称的类。

Java 中包的目的是创建一个命名空间。您重复的类名违反了该命名空间。

设计问题

package com.placeholder.constants.Constants

这不是一个正确的包名称。您已将类名混合到包名中。包应该是package com.placeholder.constants.

你的这个交叉命名问题增加了你的类设计不是最优的可能性。您可能想暂停片刻,看看更大的图景。

如果你有那么多常量要命名,我想知道其中一些是否真的应该是enum类型。请参阅Oracle 的教程。提示:在 Java 16 及更高版本中,可以在 a 方法中本地定义枚举——这是定义为嵌套类或定义为单独类的新选择。


推荐阅读