Столкновение имен Java между переменной метода и именами пакетов - PullRequest
2 голосов
/ 17 марта 2009

У меня есть некоторые классы, сгенерированные из файлов WSDL в Axis Framework. В одном из этих классов есть сгенерированный метод


public com.initechsystems.www.initech7.initechbo.Organization createOrganization(com.initechsystems.www.initech7.initechbo.Organization org) throws java.rmi.RemoteException {

//(... snip ...)
_call.setProperty(org.apache.axis.client.Call.SEND_TYPE_ATTR, Boolean.FALSE);
//(... snip ...)
}

Имя переменной org в параметре метода создает конфликт имен с пакетом org.apache.axis.client, так как компилятор не может различить пакет и переменную. Я понимаю, что могу легко это исправить, изменив имя переменной org в методе, но я бы хотел этого избежать, потому что это замедляет рабочий процесс. Есть ли способ обойти это, кроме изменения файла WSDL или сгенерированных классов?

Ошибка компилятора:


 D:\projects\java\initechdir\target\generated-sources\axistools\wsdl2java\com\initechsystems\www\initech7\initechws\OrganizationManagement\OrganizationManagementSoapStub.java:[1678,29] cannot find symbol
symbol  : variable apache
location: class com.initechsystems.www.initech7.initechbo.Organization

1 Ответ

2 голосов
/ 17 марта 2009

Есть ли способ заставить этот сгенерированный код иметь операторы импорта? Это помешает вам иметь полное имя класса.

Итак, если бы вы могли добавить:

import org.apache.axis.client.Call;

к файлу, тогда ваш вызов метода будет просто:

_call.setProperty(Call.SEND_TYPE_ATTR, Boolean.FALSE);

Я не уверен, что у Axis есть такая возможность. Если нет, я бы сказал, что переименование переменной (возможно, в «организацию») было бы лучшим решением. Я бы рекомендовал избегать ручного редактирования автоматически сгенерированных файлов, так как это усложняет их регенерацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...