2012-01-11 2 views
16

私は既存のJavaアプリケーションを自分のワークスペースにインポートしました。 私は、同じ名前のクラスがアプリケーション内の異なるパッケージに存在することを確認しています。 「Status.java」という名前のクラスがJava:インポートが別のインポート文と衝突します

import com.tata.model.common.Status; 
import com.bayer.frontlayer.dao.Status; 
public class Adapter 
{ 

} 

それを以下のようにIは、例えば、クラス内でそれらの両方を使用しようとした場合

com.tata.model.common.Status; 
com.bayer.frontlayer.dao.Status; 

においてと共に存在する例えば

Eclipseでエラーを出し始めました

import com.bayer.frontlayer.dao.Statusが別のインポートステートメントと衝突する

クラスの名前を変更せずにこれを解決する方法はありますか?

ありがとうございます。

答えて

27

含まれたパッケージ名を2つを区別してあなたは、それらをインポートせずに、明示的にそれらを使用することができます。

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

javaは私をゆっくりと殺し続けます... – Ryan

+0

あまり冗長な方法はありませんか?どのように人々はcom.tata.model.common.Statusの代わりにcommon.Statusの最後のカップルだけを介して参照することになりますか? – pete

+0

@peteあなたは例を挙げることができますか? – nasukkin

10

クラスの1つだけをインポートして、他のクラスの完全修飾名を使用できます。

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

あまり冗長な方法はありませんか? com.tata.model.common.Statusの代わりにcommon.Statusのような最後の2つのパッケージだけを使って参照する方法はありますか? – pete

+0

パッケージを所有している場合は、クラスの名前を変更できます。十分な他のインターフェイスを実装している場合は、インターフェイスタイプの1つに基づいて変数を宣言できます。オブジェクトをラッピングすることもできますが、それは良い方法よりも多くのダメージを与えます。他の言語では[名前を変更する](http://stackoverflow.com/a/28362090/469220)のインポートが可能です。 – Vlad

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

お手伝いいただきありがとうございますが、残念ながら私は1つの答えに目を向けることができます。 – Kiran

関連する問題