2012-01-11 20 views
16

Tôi đã nhập Ứng dụng Java hiện có vào không gian làm việc của mình. Tôi thấy rằng, một lớp học cùng tên có mặt trong các gói khác nhau trong Ứng dụng.Java: Nhập khẩu va chạm với một tuyên bố nhập khác

Ví dụ một lớp có tên là "Status.java" hiện diện với trong

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

Khi tôi cố gắng sử dụng cả trong số họ trong một lớp học, ví dụ như hình dưới đây

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

} 

Nó bắt đầu đưa ra lỗi trong Eclipse nêu rõ

import com.bayer.frontlayer.dao.Status va chạm với một tuyên bố nhập khác

Có cách nào để giải quyết vấn đề này mà không thay đổi tên của các lớp không ??

Cảm ơn bạn.

Trả lời

27

Bạn có thể sử dụng chúng một cách rõ ràng mà không cần nhập khẩu chúng, vì vậy tên gói bao gồm phân biệt giữa hai:

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

java tiếp tục giết tôi chậm chạp ... – Ryan

+0

Không có cách nào tiết kiệm hơn? Làm thế nào để mọi người cuối cùng nhận được để tham khảo nó thông qua chỉ vài cặp cuối cùng ví dụ common.Status thay vì com.tata.model.common.Status – pete

+0

@ pete bạn có thể cho một ví dụ? – nasukkin

10

Bạn chỉ có thể nhập một trong các lớp và sử dụng tên đủ điều kiện cho một lớp khác.

ví dụ:

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

Mặc dù tôi nghĩ điều này sẽ ít gây nhầm lẫn trong trường hợp của bạn nếu bạn chỉ sử dụng tên đủ điều kiện cho cả hai lớp.

+0

Không có cách nào tiết kiệm hơn? Làm thế nào để mọi người kết thúc việc tham khảo nó thông qua chỉ vài gói cuối cùng, ví dụ common.Status thay vì com.tata.model.common.Status – pete

+0

Nếu bạn sở hữu bất kỳ gói nào, bạn có thể đổi tên các lớp. Nếu họ thực hiện bất kỳ giao diện nào khác đủ, bạn có thể khai báo các biến của mình dựa trên một trong các loại giao diện. Bạn cũng có thể quấn các vật thể, nhưng điều đó sẽ làm thiệt hại nhiều hơn là tốt. Các ngôn ngữ khác cho phép bạn nhập [đổi tên] (http://stackoverflow.com/a/28362090/469220). – Vlad

2

trực tiếp áp dụng đầy đủ lớp Names bất cứ nơi nào áp dụng. Ví dụ:

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

Cảm ơn tất cả các bạn rất nhiều vì đã giúp đỡ, nhưng tiếc là tôi chỉ có thể đánh dấu vào một câu trả lời. – Kiran

Các vấn đề liên quan