开发 jna 的时候,传 struct 给动态链接库,需要继承 com.sun.jna.Structure 重写 getFieldOrder() 方法,返回子类的 field 的书写顺序的 List。
略一观察就可以发现,跟 toString() 干的事儿很是相像,只不过现在是只需要字段名,而不需要字段值。
就给 idea 生成 toString() 的地方加个 template(ps:字段少,手动也没啥,字段多起来,不自动化,靠人易错乱。)
添加方式
复制的模板内容在最后
最终效果
模板内容
1 | protected List<String> getFieldOrder() { |
后续
写成了插件,在 Generate 选项里,加了一项 getFieldOrder,就不需要侵染 toString 的模板了。
后来又把 String[] fields = ... 出来 private static final FIELD_ORDER = Arrays.asList(...); 在 getFieldOrder 里直接 return FIELD_ORDER; 就不需要每次分配内存去生成这个东西了。
