2011-07-04 7 views
6

Bir yardımcı sınıfla ilgili bir sorun yaşıyorum, aynı adın 2 sınıfı arasında çeviri yapmak için üzerinde çalışıyorum. Her iki sınıf da kontrol kapsamım dışındadır, bu yüzden onları yeniden adlandıramam.Ad boşlukları arasındaki sınıf adlandırma çakışmalarıyla başa çıkmak için en iyi yaklaşım

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

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

Veya ters bir yaklaşım:

Benim temel seçenekler tüm en azından türlerinden biri için tam ad alanını beyan dahil

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

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

Veya daha açık hem ad alanlarını, ilan desen:

public class MyObjectConvertor { 

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

Bu meth'i toparlayabilecek başka bir çözüm var mı od imzalar? Bir tür C++ "typedef" tarzı çözümün mümkün olup olmadığını merak ediyorum?

cevap

8

toplayıcısını imzalamak için bir yolu yoktur, en az bir sınıfın tam olarak nitelenmiş sınıf adına göre başvurulan olması gerekir.

Ve özel durumunuzda şunu söyleyebilirim: Bu sınıflardan herhangi birini alma, kaynak kodunuzda sürüm 3'ü kullan, böylece herkesin tamamen farkında olduğunu, ile aynı dönüşüm sınıflarınızın ile aynı olduğunu farklı paketlerinde tanımlanmıştır.