user663724
user663724

Reputation:

Java : The import collides with another import statement

I have imported an Existing Java Application into my Workspace . I see that , a class with same name is present in different packages with in the Application.

For example a class named "Status.java" is present with in

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

When I tried to use both of them within a class, for example as shown below

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

}

It started giving an error in Eclipse stating

The import com.bayer.frontlayer.dao.Status collides with another import statement

Is there anyway to solve this without changing the name of the classes??

Thank you.

Upvotes: 30

Views: 55371

Answers (3)

Acn
Acn

Reputation: 1066

Directly apply full Class Names wherever applicable. Eg-

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

}
....
}
}

Upvotes: 3

user130076
user130076

Reputation:

You can use them explicitly without importing them, so the included package name differentiates between the two:

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

Upvotes: 40

Vlad
Vlad

Reputation: 18633

You can import just one of the classes and use the fully qualified name for the other one.

e.g.

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

Though I think it would be less confusing in your case if you just used the fully-qualified names for both classes.

Upvotes: 14

Related Questions