メソッド変数とパッケージ名の間のJavaネーミングの衝突
-
19-08-2019 - |
質問
Axis FrameworkによってWSDLファイルから生成されたいくつかのクラスがあります。これらのクラスの1つには、生成されたメソッドがあります
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 ...)
}
コンパイラがパッケージと変数を区別できないため、methodパラメーターの変数名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ステートメントを持たせる方法はありますか?これにより、クラスの完全修飾名を取得する必要がなくなります。
したがって、追加できる場合:
import org.apache.axis.client.Call;
ファイルへの場合、メソッド呼び出しは次のようになります。
_call.setProperty(Call.SEND_TYPE_ATTR, Boolean.FALSE);
Axisにオプションがあるかどうかはわかりませんが。そうでない場合は、変数の名前を変更する(おそらく<!> quot; organization <!> quot;)と言うのが最適です。自動生成されたファイルの再編集が難しくなるため、自動生成されたファイルの手動編集を避けることをお勧めします。
所属していません StackOverflow