web-dev-qa-db-fra.com

Java: l'importation entre en collision avec une autre instruction d'importation

J'ai importé une application Java Java existante dans mon espace de travail. Je vois que, une classe du même nom est présente dans différents packages avec dans l'application.

Par exemple, une classe nommée "Status.Java" est présente avec dans

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

Quand j'ai essayé de les utiliser tous les deux dans une classe, par exemple comme indiqué ci-dessous

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

}

Il a commencé à donner une erreur dans Eclipse indiquant

import com.bayer.frontlayer.dao.Status entre en collision avec une autre instruction d'importation

Existe-t-il de toute façon pour résoudre ce problème sans changer le nom des classes ??

Je vous remercie.

22
user663724

Vous pouvez les utiliser explicitement sans les importer, donc le nom du package inclus fait la différence entre les deux:

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

Vous pouvez importer une seule des classes et utiliser le nom complet pour l'autre.

par exemple.

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

Bien que je pense que ce serait moins déroutant dans votre cas si vous utilisiez simplement les noms complets pour les deux classes.

11
Vlad

Appliquez directement les noms de classe complets, le cas échéant. Par exemple-

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
Acn