2012-01-11 69 views
16

我已將一個現有的Java應用程序導入到我的Workspace中。 我看到,具有相同名稱的類與應用程序中的不同包中存在。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與另一個進口語句發生衝突

是否有無論如何解決這個問題,而不改變類名?

謝謝。

回答

27

你可以明確地使用,而不必導入它們,所以包括包名兩者之間的區別:

//No imports required! 
public class Adapter 
{ 
    private com.tata.model.common.Status x; 
    private com.bayer.frontlayer.dao.Status y; 
} 
+9

java一直在慢慢地殺死我...... – Ryan 2013-06-07 03:38:45

+0

有沒有一種較爲冗長的方式?人們最終只能通過最後幾個包來引用它,例如common.Status,而不是com.tata.model.common.Status – pete 2015-05-27 18:42:25

+0

@pete你能舉個例子嗎? – nasukkin 2016-09-01 20:42:50

10

您只能導入其中一個類,併爲另一個類使用完全限定名稱。

例如

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 
    } 
} 

雖然我認爲這將是你的情況少混亂,如果你只使用這兩個類的完全限定名稱。

+0

有沒有一種較爲冗長的方式?人們最終只通過最後幾個包來引用它,例如common.Status而不是com.tata.model.common.Status – pete 2015-05-27 18:42:41

+0

如果您擁有任何包,則可以重命名這些類。如果他們實現了足夠的其他接口,則可以根據其中一種接口類型聲明變量。你也可以包裹物體,但那會造成更多的傷害。其他語言讓你[重命名](http://stackoverflow.com/a/28362090/469220)進口。 – Vlad 2015-05-28 11:06:01

2

直接申請全類名(如適用)。例如 -

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) { 

} 
.... 
} 
} 
+0

非常感謝您的幫助,但不幸的是,我只能捱打一個答案。 – Kiran 2012-01-11 09:51:33