Java:导入与另一个导入语句冲突
Posted
技术标签:
【中文标题】Java:导入与另一个导入语句冲突【英文标题】:Java : The import collides with another import statement 【发布时间】:2012-02-07 16:22:51 【问题描述】:我已将现有 Java 应用程序导入我的工作区。 我看到,同名的类存在于应用程序的不同包中。
例如,一个名为“Status.java”的类存在于
com.tata.model.common.Status;
com.bayer.frontlayer.dao.Status;
当我尝试在一个类中同时使用它们时,例如如下所示
import com.tata.model.common.Status;
import com.bayer.frontlayer.dao.Status;
public class Adapter
它开始在 Eclipse 中给出错误声明
import com.bayer.frontlayer.dao.Status 与另一个 import 语句冲突
有没有办法在不改变类名的情况下解决这个问题??
谢谢。
【问题讨论】:
【参考方案1】:在适用的情况下直接应用完整的类名称。例如-
public class SomeClass
public someMethod()
com.myapp.someotherpackage.Status = "something";
com.some.other.package.Status = "otherthing";
if(com.myapp.someotherpackage.Status == com.some.other.package.Status)
....
【讨论】:
非常感谢大家的帮助,但不幸的是我只能勾选一个答案。【参考方案2】:您可以在不导入它们的情况下显式使用它们,因此包含的包名称区分两者:
//No imports required!
public class Adapter
private com.tata.model.common.Status x;
private com.bayer.frontlayer.dao.Status y;
【讨论】:
没有更简洁的方法吗?人们如何最终只通过最后几个包来引用它,例如 common.Status 而不是 com.tata.model.common.Status @pete 你能举个例子吗?【参考方案3】:您可以只导入其中一个类并为另一个类使用完全限定名称。
例如
import com.tata.model.common.Status;
//import com.bayer.frontlayer.dao.Status;
class SomeClass
void someMethod()
new Status(); // com.tata.model.common.Status
new com.bayer.frontlayer.dao.Status(); //com.bayer.frontlayer.dao.Status
虽然我认为如果您只对两个类都使用完全限定的名称,那么在您的情况下就不会那么混乱了。
【讨论】:
没有更简洁的方法吗?人们如何最终只通过最后几个包来引用它,例如 common.Status 而不是 com.tata.model.common.Status 如果您拥有任何包,您可以重命名这些类。如果它们实现了足够的任何其他接口,则可以基于其中一种接口类型声明变量。你也可以包裹物体,但这会弊大于利。其他语言让你 rename 导入。以上是关于Java:导入与另一个导入语句冲突的主要内容,如果未能解决你的问题,请参考以下文章
eclipse写java时没有import对应的包,报错,点小红叉不提示导入包。手工把import语句写全OK,但是不方便。