如何在 swig 生成的代码中添加显式@Override?

How to add explicit @Override in swig generated code?

我想在以下 swig 代码片段中添加一个明确的 @Override

%extend gdcm::Tag {
  int hashCode() {
    return self->MyCxxHashCode();
  }
};

现在生成的 java 代码不包含关键字:

package gdcm;
public class Tag {
[...]
  public int hashCode() {
    return gdcmJNI.Tag_hashCode(swigCPtr, this);
  }
}

虽然我更喜欢:

package gdcm;
public class Tag {
[...]
  @Override
  public int hashCode() {
    return gdcmJNI.Tag_hashCode(swigCPtr, this);
  }
}

最简单的方法是使用 %javamethodmodifiers,通常只是 "public",但可以很简单地选择它来实现您想要的:

%module test

%inline %{
struct Foo {};
%}

%javamethodmodifiers Foo::hashCode %{@Override
  public%};

%extend Foo {
  int hashCode() {
    return 0;
  }
};