java - Typemap javaimports不适用于内部C++类

标签 java c++ swig inner-classes nested-class

假设我有nested.i像:

%typemap(javaimports) Outer "
/**
* Outer class
*/"

%typemap(javaimports) Outer::Inner "
/**
* Outer::Inner class
*/"

%javamethodmodifiers Outer::outer_method(int) "
  /**
  * Outer::outer_method(int)
  */
  public";

%javamethodmodifiers Outer::Inner::inner_method(int) "
  /**
  * Outer::Inner::inner_method(int)
  */
  public";

struct Outer {
  int outer_method(int);
  struct Inner {
    int inner_method(int);
  };
};

并尝试生成像
$ swig -java -c++ -module Sample nested.i

结果,除了Outer::Inner class之外,出现了3个import和修饰符。

环境:MS Windows 7
$ swig -version

SWIG Version 3.0.7

Compiled with i586-mingw32msvc-g++ [i586-pc-mingw32msvc]

Configured options: +pcre

Please see http://www.swig.org for reporting bugs and further information

最佳答案

javaimports确实向导入部分添加了代码,并且当您包装嵌套类时,它位于单个文件内并共享相同的包含。嵌套类的javaimports被忽略。

就类文档而言,我个人使用javaclassmodifiers像这样:

%typemap(javaclassmodifiers) Outer::Inner "
/**
* Outer::Inner class
*/
public class";

对于内部类,它将生成:
  static 
  /**
  * Outer::Inner class
  */
  public class Inner

并不是很好,它可以编译,但是不会为该类生成javadoc。

关于java - Typemap javaimports不适用于内部C++类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33625816/

相关文章:

java - RandomAccessFile 读取 Jar 文件中的文件

java - 使用C++编写的Java读取共享内存数据

c++ - 像c#一样将QRadioButton显示为QPushButton

c++ - 如何在c++17中定义函数组合?

c++ - Lua SWIG 基础知识

java - SWIG 不接受指针参数的包装对象

java - 在 Activity 中使用单例方法 (Android)

java - JSP 声明中的静态字段

c++ - Ruby 扩展代码中的段错误

c++ - 用 swig 包装专门的 c++ 模板类