方法变量和包名称之间的Java命名冲突

方法变量和包名称之间的Java命名冲突,java,web-services,axis,convention,name-clash,Java,Web Services,Axis,Convention,Name Clash,我有一些由Axis框架从WSDL文件生成的类。在其中一个类中,有一个生成的方法 public com.initechsystems.www.initech7.initechbo.Organization createOrganization(com.initechsystems.www.initech7.initechbo.Organization org) throws java.rmi.RemoteException { //(... snip ...) _call.setPropert

我有一些由Axis框架从WSDL文件生成的类。在其中一个类中,有一个生成的方法


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

有没有办法使生成的代码具有导入语句?这将避免您必须拥有类的完全限定名

因此,如果您可以添加:

import org.apache.axis.client.Call;
然后,您的方法调用将是:

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

我不确定Axis是否有这样的选择。如果不是,我会说重命名变量(可能是“组织”)将是最好的选择。我建议避免手动编辑自动生成的文件,因为这会使重新生成文件更加困难。

请发布编译器错误的文本。在原始帖子中编辑。这很有趣(如“哈哈”,而不是“怪异”)。我想我以前从来没有试过给变量命名java、javax或org。是的,我也这么想。这种幽默是由一些“Initech”开发人员提供的,他们开发了.NET web服务,可能没有考虑这样一个变量名的后果。但我同意,这在某种程度上是有趣的。这是个好主意,但我认为这是不可能的——至少我还没有找到一种方法来做到这一点。。