2011-07-04 30 views
6

Tôi đang gặp vấn đề với lớp trợ giúp tôi đang làm việc để dịch giữa 2 lớp cùng tên. Cả hai lớp đều nằm ngoài phạm vi kiểm soát của tôi, vì vậy tôi không thể đổi tên chúng một cách đơn giản.Cách tiếp cận tốt nhất để giải quyết các vụ va chạm tên lớp giữa các không gian tên

tùy chọn cơ bản của tôi đều liên quan đến tuyên bố không gian tên đầy đủ cho ít nhất một trong các loại:

import com.myco.second.long.package.namespace.MyObject; 
public class MyObjectConvertor { 

    MyObject transform(com.myco.first.long.package.namespace.MyObject o) {} 
} 

Hoặc cách tiếp cận ngược lại:

import com.myco.first.long.package.namespace.MyObject; 
public class MyObjectConvertor { 

    com.myco.second.long.package.namespace.MyObject transform(MyObject o) {} 
} 

Hoặc tuyên bố cả hai không gian tên, đối với một rõ ràng hơn mẫu:

public class MyObjectConvertor { 

    com.myco.second.long.package.namespace.MyObject 
     transform(com.myco.first.long.package.namespace.MyObject o) {} 
} 

Có giải pháp nào khác có thể dọn dẹp các chữ ký od? Tôi tự hỏi nếu một số loại C + + "typedef" phong cách giải pháp có thể là có thể?

Trả lời

8

Không có cách nào để dọn dẹp chữ ký, ít nhất một lớp sẽ phải được tham chiếu bằng tên lớp đủ điều kiện.

Và trong trường hợp đặc biệt, tôi thậm chí còn nói: không nhập bất kỳ lớp nào trong số đó, hãy sử dụng phiên bản 3 trong mã nguồn của bạn để mọi người biết rõ rằng các lớp chuyển đổi của bạn với cùng tên được xác định trong các gói khác nhau.

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