2012-07-01 3 views
3

У меня есть два класса в моем приложении с именами identicall, я не могу их переименовать, из них от packageA второй от packageB, имя этого класса - State, и я должен использовать его в одном место в моей программе, как это:Сделать код более читаемым

Map<Integer,Set<org.omg.PortableServer.POAManagerPackage.State>> 

есть ли способ (но с помощью этого класса), чтобы сделать это несколько более удобным для чтения (чтобы сократить его несколько)?

+0

Дубликат http://stackoverflow.com/questions/2447880/change-name-of-import-in-java-or-import-two-classes -одно-то же имя –

+0

Сегодня я узнал: вы не можете статически импортировать пакет, только тип. Это было мое предложение – Miquel

ответ

0

Создайте класс упаковки, который будет иметь только Set<org.omg.PortableServer.POAManagerPackage.State> и все необходимые методы Set.

использование в клиенте:

Map<Integer,GoodWrappingSetName> 
+0

не могли бы вы показать пример, как это сделать? Благодарю. – smallB

4

Возможно получить от одного из классов неоднозначность. Например, в POAState.java:

import org.omg.PortableServer.POAManagerPackage.State; 

public class POAState extends State {} 

затем:

Map<Integer,Set<POAState>> my_map; 
0

Если вы используете два различных State классов в одной и той же части кода (* .java файл), то ответ "Нет" , Java не предоставляет короткую ручную нотацию. Вы должны быть явным и включать полные имена пакетов, чтобы устранить двусмысленность.

@ dantuch поднял интересную идею, но вместо того, чтобы обернуть класс, если вы можете расширить один из них, вы можете создать пустой подкласс класса State, который просто отбрасывает всю его реализацию родительскому классу.

public MyState extends State { 
    // no implementation required 
} 

Затем вы можете обратиться к MyState